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 2019/01/02 14:22:06 UTC

[httpcomponents-client] 01/01: [HTTPCLIENT-1957] Remove use of Proxy-Connection header

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

michaelo pushed a commit to branch HTTPCLIENT-1957
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git

commit 65674d5a245006be76e0801eb18a1f1bfcece134
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Wed Jan 2 15:21:50 2019 +0100

    [HTTPCLIENT-1957] Remove use of Proxy-Connection header
---
 .../http/protocol/RequestClientConnControl.java    | 14 ++---
 .../protocol/TestRequestClientConnControl.java     | 59 +++++-----------------
 2 files changed, 16 insertions(+), 57 deletions(-)

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..5e01c82 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
@@ -44,9 +44,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * This protocol interceptor is responsible for adding {@code Connection}
- * or {@code Proxy-Connection} headers to the outgoing requests, which
- * is essential for managing persistence of {@code HTTP/1.0} connections.
+ * This protocol interceptor is responsible for adding the {@code Connection}
+ * header to the outgoing requests, which is essential for managing persistence
+ * of {@code HTTP/1.0} connections.
  *
  * @since 4.0
  */
@@ -55,8 +55,6 @@ public class RequestClientConnControl implements HttpRequestInterceptor {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    private static final String PROXY_CONN_DIRECTIVE = "Proxy-Connection";
-
     public RequestClientConnControl() {
         super();
     }
@@ -68,7 +66,6 @@ public class RequestClientConnControl implements HttpRequestInterceptor {
 
         final String method = request.getMethod();
         if (method.equalsIgnoreCase("CONNECT")) {
-            request.setHeader(PROXY_CONN_DIRECTIVE, HeaderElements.KEEP_ALIVE);
             return;
         }
 
@@ -86,11 +83,6 @@ public class RequestClientConnControl implements HttpRequestInterceptor {
                 request.addHeader(HttpHeaders.CONNECTION, HeaderElements.KEEP_ALIVE);
             }
         }
-        if (route.getHopCount() == 2 && !route.isTunnelled()) {
-            if (!request.containsHeader(PROXY_CONN_DIRECTIVE)) {
-                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..2c7f5df 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
@@ -55,11 +55,8 @@ public class TestRequestClientConnControl {
 
         final HttpRequestInterceptor interceptor = new RequestClientConnControl();
         interceptor.process(request, null, context);
-        final Header header1 = request.getFirstHeader("Proxy-Connection");
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
-        final Header header2 = request.getFirstHeader(HttpHeaders.CONNECTION);
-        Assert.assertNull(header2);
+        final Header header = request.getFirstHeader(HttpHeaders.CONNECTION);
+        Assert.assertNull(header);
     }
 
     @Test
@@ -75,11 +72,9 @@ public class TestRequestClientConnControl {
         final HttpRequestInterceptor interceptor = new RequestClientConnControl();
         interceptor.process(request, null, context);
 
-        final Header header1 = request.getFirstHeader(HttpHeaders.CONNECTION);
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
-        final Header header2 = request.getFirstHeader("Proxy-Connection");
-        Assert.assertNull(header2);
+        final Header header = request.getFirstHeader(HttpHeaders.CONNECTION);
+        Assert.assertNotNull(header);
+        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header.getValue());
     }
 
     @Test
@@ -97,11 +92,9 @@ public class TestRequestClientConnControl {
         final HttpRequestInterceptor interceptor = new RequestClientConnControl();
         interceptor.process(request, null, context);
 
-        final Header header1 = request.getFirstHeader(HttpHeaders.CONNECTION);
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
-        final Header header2 = request.getFirstHeader("Proxy-Connection");
-        Assert.assertNull(header2);
+        final Header header = request.getFirstHeader(HttpHeaders.CONNECTION);
+        Assert.assertNotNull(header);
+        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header.getValue());
     }
 
     @Test
@@ -119,11 +112,8 @@ public class TestRequestClientConnControl {
         final HttpRequestInterceptor interceptor = new RequestClientConnControl();
         interceptor.process(request, null, context);
 
-        final Header header1 = request.getFirstHeader("Proxy-Connection");
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.KEEP_ALIVE, header1.getValue());
-        final Header header2 = request.getFirstHeader(HttpHeaders.CONNECTION);
-        Assert.assertNull(header2);
+        final Header header = request.getFirstHeader(HttpHeaders.CONNECTION);
+        Assert.assertNull(header);
     }
 
     @Test
@@ -142,32 +132,9 @@ public class TestRequestClientConnControl {
         final HttpRequestInterceptor interceptor = new RequestClientConnControl();
         interceptor.process(request, null, context);
 
-        final Header header1 = request.getFirstHeader(HttpHeaders.CONNECTION);
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.CLOSE, header1.getValue());
-        final Header header2 = request.getFirstHeader("Proxy-Connection");
-        Assert.assertNull(header2);
-    }
-
-    @Test
-    public void testPreserveCustomProxyConnectionHeader() throws Exception {
-        final HttpRequest request = new BasicHttpRequest("GET", "/");
-        request.addHeader("Proxy-Connection", HeaderElements.CLOSE);
-        final HttpClientContext context = HttpClientContext.create();
-
-        final HttpHost target = new HttpHost("http", "localhost", 80);
-        final HttpHost proxy = new HttpHost("localhost", 8080);
-        final HttpRoute route = new HttpRoute(target, null, proxy, false,
-                TunnelType.PLAIN, LayerType.PLAIN);
-
-        context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
-
-        final HttpRequestInterceptor interceptor = new RequestClientConnControl();
-        interceptor.process(request, null, context);
-
-        final Header header1 = request.getFirstHeader("Proxy-Connection");
-        Assert.assertNotNull(header1);
-        Assert.assertEquals(HeaderElements.CLOSE, header1.getValue());
+        final Header header = request.getFirstHeader(HttpHeaders.CONNECTION);
+        Assert.assertNotNull(header);
+        Assert.assertEquals(HeaderElements.CLOSE, header.getValue());
     }
 
 }