You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mi...@apache.org on 2019/10/11 11:15:13 UTC
[tomcat] 02/02: Properly determine requests left on a "keepAlive"
connection
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch BZ-63835/9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit a5e3e1d7a498a3156350ae8bbed36706b2600e64
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Fri Oct 11 12:51:44 2019 +0200
Properly determine requests left on a "keepAlive" connection
---
java/org/apache/coyote/http11/Http11Processor.java | 8 +++++++-
java/org/apache/tomcat/util/net/SocketWrapperBase.java | 6 +++++-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java
index 7bc50a4..314c3d1 100644
--- a/java/org/apache/coyote/http11/Http11Processor.java
+++ b/java/org/apache/coyote/http11/Http11Processor.java
@@ -974,7 +974,13 @@ public class Http11Processor extends AbstractProcessor {
String value = "timeout=" + TimeUnit.MILLISECONDS.toSeconds(keepAliveTimeout);
if (maxKeepAliveRequests > 0) {
- value += ", max=" + maxKeepAliveRequests;
+ /*
+ * We need to add 1 here because the value is already decremented in
+ * service() by 1. Otherwise the client would see 99 on the first request.
+ * In HTTPd this value is modified after this code block has been run.
+ */
+ int left = socketWrapper.getKeepAliveLeft() + 1;
+ value += ", max=" + left;
}
headers.setValue("Keep-Alive").setString(value);
diff --git a/java/org/apache/tomcat/util/net/SocketWrapperBase.java b/java/org/apache/tomcat/util/net/SocketWrapperBase.java
index 2c082d6..154c9c7 100644
--- a/java/org/apache/tomcat/util/net/SocketWrapperBase.java
+++ b/java/org/apache/tomcat/util/net/SocketWrapperBase.java
@@ -212,12 +212,16 @@ public abstract class SocketWrapperBase<E> {
return this.writeTimeout;
}
+ public int getKeepAliveLeft() {
+ return keepAliveLeft;
+ }
+
public void setKeepAliveLeft(int keepAliveLeft) {
this.keepAliveLeft = keepAliveLeft;
}
public int decrementKeepAlive() {
- return --keepAliveLeft;
+ return keepAliveLeft--;
}
public String getRemoteHost() {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org