]> granicus.if.org Git - python/commitdiff
Issue #12133: AbstractHTTPHandler.do_open() of urllib.request closes the HTTP
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 17 Jun 2011 12:06:27 +0000 (14:06 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 17 Jun 2011 12:06:27 +0000 (14:06 +0200)
connection if its getresponse() method fails with a socket error. Patch written
by Ezio Melotti.

Lib/test/test_urllib2.py
Lib/urllib2.py
Misc/NEWS

index e96f948a9b367c7ae70ce63133a279daafc5dd9f..e889bc3d10ba0cceb30dfb23b8ed26abb64ea3fe 100644 (file)
@@ -293,6 +293,7 @@ class MockHTTPClass:
             self._tunnel_headers = headers
         else:
             self._tunnel_headers.clear()
+
     def request(self, method, url, body=None, headers=None):
         self.method = method
         self.selector = url
@@ -304,9 +305,13 @@ class MockHTTPClass:
         if self.raise_on_endheaders:
             import socket
             raise socket.error()
+
     def getresponse(self):
         return MockHTTPResponse(MockFile(), {}, 200, "OK")
 
+    def close(self):
+        pass
+
 class MockHandler:
     # useful for testing handler machinery
     # see add_ordered_mock_handlers() docstring
index abc84b1dcbda2c3576173119fd14f78d358aa253..26416193f6b9b999ececc5ec01e6f8ac443c29a9 100644 (file)
@@ -1172,6 +1172,8 @@ class AbstractHTTPHandler(BaseHandler):
                 r = h.getresponse()
         except socket.error, err: # XXX what error?
             raise URLError(err)
+        finally:
+            h.close()
 
         # Pick apart the HTTPResponse object to get the addinfourl
         # object initialized properly.
index bbd076a5e3941195a78c1b5c9eaf8022648539df..5fa417856a52c41cacc5b9f26ac4bf2cdfea487c 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -16,6 +16,10 @@ Core and Builtins
 Library
 -------
 
+- Issue #12133: AbstractHTTPHandler.do_open() of urllib.request closes the HTTP
+  connection if its getresponse() method fails with a socket error. Patch
+  written by Ezio Melotti.
+
 - Issue #9284: Allow inspect.findsource() to find the source of doctest
   functions.