You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2012/12/12 11:35:17 UTC

svn commit: r1420609 - in /httpcomponents/httpclient/branches/4.2.x: RELEASE_NOTES.txt httpclient/src/main/java/org/apache/http/impl/client/DecompressingHttpClient.java

Author: olegk
Date: Wed Dec 12 10:35:16 2012
New Revision: 1420609

URL: http://svn.apache.org/viewvc?rev=1420609&view=rev
Log:
HTTPCLIENT-1273: DecompressingHttpClient does not automatically consume response content in case of an i/o, HTTP or runtime exception thrown by the decompressing protocol interceptor leading to a potential connection leak

Modified:
    httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt
    httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/DecompressingHttpClient.java

Modified: httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt?rev=1420609&r1=1420608&r2=1420609&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt (original)
+++ httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt Wed Dec 12 10:35:16 2012
@@ -1,6 +1,11 @@
 Changes since 4.2.2
 -------------------
 
+* [HTTPCLIENT-1273] DecompressingHttpClient does not automatically consume response 
+  content in case of an i/o, HTTP or runtime exception thrown by the decompressing 
+  protocol interceptor leading to a potential connection leak. 
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
 * [HTTPCLIENT-1268] NTLM engine refactor fix, to correct a buffer overrun.
   Contributed by Karl Wright <DaddyWri at gmail.com>  
 

Modified: httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/DecompressingHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/DecompressingHttpClient.java?rev=1420609&r1=1420608&r2=1420609&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/DecompressingHttpClient.java (original)
+++ httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/DecompressingHttpClient.java Wed Dec 12 10:35:16 2012
@@ -135,13 +135,24 @@ public class DecompressingHttpClient imp
             }
             acceptEncodingInterceptor.process(wrapped, context);
             HttpResponse response = backend.execute(target, wrapped, context);
-            contentEncodingInterceptor.process(response, context);
-            if (Boolean.TRUE.equals(context.getAttribute(ResponseContentEncoding.UNCOMPRESSED))) {
-                response.removeHeaders("Content-Length");
-                response.removeHeaders("Content-Encoding");
-                response.removeHeaders("Content-MD5");
+            try {
+                contentEncodingInterceptor.process(response, context);
+                if (Boolean.TRUE.equals(context.getAttribute(ResponseContentEncoding.UNCOMPRESSED))) {
+                    response.removeHeaders("Content-Length");
+                    response.removeHeaders("Content-Encoding");
+                    response.removeHeaders("Content-MD5");
+                }
+                return response;
+            } catch (HttpException ex) {
+                EntityUtils.consume(response.getEntity());
+                throw ex;
+            } catch (IOException ex) {
+                EntityUtils.consume(response.getEntity());
+                throw ex;
+            } catch (RuntimeException ex) {
+                EntityUtils.consume(response.getEntity());
+                throw ex;
             }
-            return response;
         } catch (HttpException e) {
             throw new ClientProtocolException(e);
         }