summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_urllib2.py3
-rw-r--r--Lib/urllib/request.py2
-rw-r--r--Misc/NEWS4
3 files changed, 9 insertions, 0 deletions
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index e9fb2fc..58ef836 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -317,6 +317,9 @@ class MockHTTPClass:
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
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 5325d62..35fd1f1 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -1137,6 +1137,8 @@ class AbstractHTTPHandler(BaseHandler):
r = h.getresponse() # an HTTPResponse instance
except socket.error as err:
raise URLError(err)
+ finally:
+ h.close()
r.url = req.get_full_url()
# This line replaces the .msg attribute of the HTTPResponse
diff --git a/Misc/NEWS b/Misc/NEWS
index 75d1082..6cc0f03 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -25,6 +25,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.