You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by mb...@apache.org on 2003/06/11 00:42:52 UTC

cvs commit: jakarta-commons/httpclient/src/test/org/apache/commons/httpclient TestResponseHeaders.java

mbecke      2003/06/10 15:42:52

  Modified:    httpclient/src/java/org/apache/commons/httpclient
                        HttpMethodBase.java
               httpclient/src/test/org/apache/commons/httpclient
                        TestResponseHeaders.java
  Log:
  Duplicate connection headers are now handled correctly.
  PR: 20569
  Reviewed by: Oleg Kalnichevski
  
  Revision  Changes    Path
  1.151     +6 -6      jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java
  
  Index: HttpMethodBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v
  retrieving revision 1.150
  retrieving revision 1.151
  diff -u -r1.150 -r1.151
  --- HttpMethodBase.java	26 May 2003 22:07:21 -0000	1.150
  +++ HttpMethodBase.java	10 Jun 2003 22:42:51 -0000	1.151
  @@ -883,13 +883,13 @@
           // In case being connected via a proxy server
           if (!conn.isTransparent()) {
               // Check for 'proxy-connection' directive
  -            connectionHeader = getResponseHeader("proxy-connection");
  +            connectionHeader = responseHeaders.getFirstHeader("proxy-connection");
           }
           // In all cases Check for 'connection' directive
           // some non-complaint proxy servers send it instread of
           // expected 'proxy-connection' directive
           if (connectionHeader == null) {
  -            connectionHeader = getResponseHeader("connection");
  +            connectionHeader = responseHeaders.getFirstHeader("connection");
           }
           if (connectionHeader != null) {
               if (connectionHeader.getValue().equalsIgnoreCase("close")) {
  
  
  
  1.7       +72 -4     jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestResponseHeaders.java
  
  Index: TestResponseHeaders.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestResponseHeaders.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestResponseHeaders.java	23 Jan 2003 22:48:27 -0000	1.6
  +++ TestResponseHeaders.java	10 Jun 2003 22:42:52 -0000	1.7
  @@ -62,6 +62,8 @@
   
   package org.apache.commons.httpclient;
   
  +import org.apache.commons.httpclient.methods.GetMethod;
  +
   import junit.framework.Test;
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
  @@ -142,6 +144,72 @@
           method.execute(state, conn);
           assertNotNull( "Response body is null.", method.getResponseBodyAsStream() );
                   
  +    }
  +
  +    public void testDuplicateProxyConnection() throws Exception {
  +        
  +        SimpleHttpConnection conn = new SimpleHttpConnection();
  +        String headers = 
  +            "HTTP/1.1 200 OK\r\n"
  +            + "proxy-connection: close\r\n"
  +            + "proxy-connection: close\r\n"
  +            + "\r\n";
  +
  +        conn.addResponse(headers, "");
  +        conn.setProxyHost("proxy");
  +        conn.setProxyPort(1);
  +        GetMethod method = new GetMethod("/");
  +        method.execute(new HttpState(), conn);
  +        method.getResponseBodyAsString();
  +        
  +        assertFalse(conn.isOpen());
  +        
  +        conn = new SimpleHttpConnection();
  +        headers = 
  +            "HTTP/1.0 200 OK\r\n"
  +            + "proxy-connection: keep-alive\r\n"
  +            + "proxy-connection: keep-alive\r\n"
  +            + "\r\n";
  +
  +        conn.addResponse(headers, "");
  +        conn.setProxyHost("proxy");
  +        conn.setProxyPort(1);
  +        method = new GetMethod("/");
  +        method.execute(new HttpState(), conn);
  +        method.getResponseBodyAsString();
  +        
  +        assertTrue(conn.isOpen());        
  +    }
  +
  +    public void testDuplicateConnection() throws Exception {
  +        
  +        SimpleHttpConnection conn = new SimpleHttpConnection();
  +        String headers = 
  +            "HTTP/1.1 200 OK\r\n"
  +            + "Connection: close\r\n"
  +            + "Connection: close\r\n"
  +            + "\r\n";
  +
  +        conn.addResponse(headers, "");
  +        GetMethod method = new GetMethod("/");
  +        method.execute(new HttpState(), conn);
  +        method.getResponseBodyAsString();
  +        
  +        assertFalse(conn.isOpen());
  +
  +        conn = new SimpleHttpConnection();
  +        headers = 
  +            "HTTP/1.0 200 OK\r\n"
  +            +"Connection: keep-alive\r\n"
  +            +"Connection: keep-alive\r\n"
  +            +"\r\n";
  +
  +        conn.addResponse(headers, "");
  +        method = new GetMethod("/");
  +        method.execute(new HttpState(), conn);
  +        method.getResponseBodyAsString();
  +        
  +        assertTrue(conn.isOpen());
       }
   
       public void testNullHeaders() throws Exception {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org