Index: /home/oleg/src/apache.org/jakarta-commons/httpclient-trunk/src/test/org/apache/commons/httpclient/TestConnectionPersistence.java =================================================================== --- /home/oleg/src/apache.org/jakarta-commons/httpclient-trunk/src/test/org/apache/commons/httpclient/TestConnectionPersistence.java (revision 240441) +++ /home/oleg/src/apache.org/jakarta-commons/httpclient-trunk/src/test/org/apache/commons/httpclient/TestConnectionPersistence.java (working copy) @@ -29,10 +29,12 @@ import java.io.IOException; +import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.commons.httpclient.server.HttpRequestHandler; import org.apache.commons.httpclient.server.SimpleHttpServerConnection; +import org.apache.commons.httpclient.server.SimpleProxy; import org.apache.commons.httpclient.server.SimpleRequest; import org.apache.commons.httpclient.server.SimpleResponse; @@ -215,5 +217,36 @@ assertFalse(connman.getConection().isOpen()); } + public void testProxyConnClose() throws Exception { + this.server.setHttpService(new EchoService()); + this.proxy = new SimpleProxy(); + this.client.getHostConfiguration().setProxy( + proxy.getLocalAddress(), + proxy.getLocalPort()); + + AccessibleHttpConnectionManager connman = new AccessibleHttpConnectionManager(); + + this.client.setHttpConnectionManager(connman); + + GetMethod httpget = new GetMethod("/test/"); + try { + this.client.executeMethod(httpget); + } finally { + httpget.releaseConnection(); + } + assertTrue(connman.getConection().isOpen()); + + httpget = new GetMethod("/test/"); + httpget.setRequestHeader("Proxy-Connection", "Close"); + try { + this.client.executeMethod(httpget); + } finally { + httpget.releaseConnection(); + } + assertFalse(connman.getConection().isOpen()); + assertEquals("Close", httpget.getRequestHeader("Proxy-Connection").getValue()); + } + + } Index: /home/oleg/src/apache.org/jakarta-commons/httpclient-trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java =================================================================== --- /home/oleg/src/apache.org/jakarta-commons/httpclient-trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java (revision 240441) +++ /home/oleg/src/apache.org/jakarta-commons/httpclient-trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java (working copy) @@ -1262,7 +1262,9 @@ LOG.trace("enter HttpMethodBase.addProxyConnectionHeader(" + "HttpState, HttpConnection)"); if (!conn.isTransparent()) { - setRequestHeader("Proxy-Connection", "Keep-Alive"); + if (getRequestHeader("Proxy-Connection") == null) { + addRequestHeader("Proxy-Connection", "Keep-Alive"); + } } }