You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by mi...@apache.org on 2018/12/24 00:05:31 UTC

[httpcomponents-client] 01/01: Send Keep-Alive for HTTP/1.0 only

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch drop-http11-keep-alive
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git

commit 92b3d1944dd22658dd3b580d5cf59fe1a22329a2
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Mon Dec 24 01:04:57 2018 +0100

    Send Keep-Alive for HTTP/1.0 only
---
 .../testing/sync/TestMinimalClientRequestExecution.java      |  4 ++--
 .../hc/client5/http/protocol/RequestClientConnControl.java   |  7 +++++--
 .../client5/http/protocol/TestRequestClientConnControl.java  | 12 ++++++------
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestMinimalClientRequestExecution.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestMinimalClientRequestExecution.java
index 0092cf4..c15a361 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestMinimalClientRequestExecution.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/TestMinimalClientRequestExecution.java
@@ -91,8 +91,8 @@ public class TestMinimalClientRequestExecution extends LocalServerTestBase {
             for (final Header header: headers) {
                 headerSet.add(header.getName().toLowerCase(Locale.ROOT));
             }
-            Assert.assertEquals(3, headerSet.size());
-            Assert.assertTrue(headerSet.contains("connection"));
+            Assert.assertEquals(2, headerSet.size());
+            //Assert.assertTrue(headerSet.contains("connection"));
             Assert.assertTrue(headerSet.contains("host"));
             Assert.assertTrue(headerSet.contains("user-agent"));
         }
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestClientConnControl.java b/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestClientConnControl.java
index 902cac2..58ffd66 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestClientConnControl.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/protocol/RequestClientConnControl.java
@@ -38,6 +38,8 @@ import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpRequestInterceptor;
+import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.http.protocol.HttpContext;
 import org.apache.hc.core5.util.Args;
 import org.slf4j.Logger;
@@ -81,13 +83,14 @@ public class RequestClientConnControl implements HttpRequestInterceptor {
             return;
         }
 
+        final ProtocolVersion ver = context.getProtocolVersion();
         if (route.getHopCount() == 1 || route.isTunnelled()) {
-            if (!request.containsHeader(HttpHeaders.CONNECTION)) {
+            if (!request.containsHeader(HttpHeaders.CONNECTION) && ver.lessEquals(HttpVersion.HTTP_1_0)) {
                 request.addHeader(HttpHeaders.CONNECTION, HeaderElements.KEEP_ALIVE);
             }
         }
         if (route.getHopCount() == 2 && !route.isTunnelled()) {
-            if (!request.containsHeader(PROXY_CONN_DIRECTIVE)) {
+            if (!request.containsHeader(PROXY_CONN_DIRECTIVE) && ver.lessEquals(HttpVersion.HTTP_1_0)) {
                 request.addHeader(PROXY_CONN_DIRECTIVE, HeaderElements.KEEP_ALIVE);
             }
         }
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/protocol/TestRequestClientConnControl.java b/httpclient5/src/test/java/org/apache/hc/client5/http/protocol/TestRequestClientConnControl.java
index b4ce09a..6326f9a 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/protocol/TestRequestClientConnControl.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/protocol/TestRequestClientConnControl.java
@@ -76,8 +76,8 @@ public class TestRequestClientConnControl {
         interceptor.process(request, null, context);
 
         final Header header1 = request.getFirstHeader(HttpHeaders.CONNECTION);
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
+        Assert.assertNull(header1);
+        //Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
         final Header header2 = request.getFirstHeader("Proxy-Connection");
         Assert.assertNull(header2);
     }
@@ -98,8 +98,8 @@ public class TestRequestClientConnControl {
         interceptor.process(request, null, context);
 
         final Header header1 = request.getFirstHeader(HttpHeaders.CONNECTION);
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
+        Assert.assertNull(header1);
+        //Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
         final Header header2 = request.getFirstHeader("Proxy-Connection");
         Assert.assertNull(header2);
     }
@@ -120,8 +120,8 @@ public class TestRequestClientConnControl {
         interceptor.process(request, null, context);
 
         final Header header1 = request.getFirstHeader("Proxy-Connection");
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
+        Assert.assertNull(header1);
+        //Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
         final Header header2 = request.getFirstHeader(HttpHeaders.CONNECTION);
         Assert.assertNull(header2);
     }