changeset: 79876:92656b5df2f2 user: Nadeem Vawda date: Sun Oct 21 17:37:43 2012 +0200 files: Lib/test/test_urllib2.py Lib/urllib/request.py Misc/NEWS description: Issue #12692: Fix resource leak in urllib.request. diff -r ce9c9cbd1b11 -r 92656b5df2f2 Lib/test/test_urllib2.py --- a/Lib/test/test_urllib2.py Sun Oct 21 17:21:04 2012 +0200 +++ b/Lib/test/test_urllib2.py Sun Oct 21 17:37:43 2012 +0200 @@ -302,6 +302,7 @@ self.req_headers = [] self.data = None self.raise_on_endheaders = False + self.sock = None self._tunnel_headers = {} def __call__(self, host, timeout=socket._GLOBAL_DEFAULT_TIMEOUT): diff -r ce9c9cbd1b11 -r 92656b5df2f2 Lib/urllib/request.py --- a/Lib/urllib/request.py Sun Oct 21 17:21:04 2012 +0200 +++ b/Lib/urllib/request.py Sun Oct 21 17:37:43 2012 +0200 @@ -1255,6 +1255,12 @@ raise URLError(err) else: r = h.getresponse() + # If the server does not send us a 'Connection: close' header, + # HTTPConnection assumes the socket should be left open. Manually + # mark the socket to be closed when this response object goes away. + if h.sock: + h.sock.close() + h.sock = None r.url = req.get_full_url() # This line replaces the .msg attribute of the HTTPResponse diff -r ce9c9cbd1b11 -r 92656b5df2f2 Misc/NEWS --- a/Misc/NEWS Sun Oct 21 17:21:04 2012 +0200 +++ b/Misc/NEWS Sun Oct 21 17:37:43 2012 +0200 @@ -59,6 +59,9 @@ Library ------- +- Issue #12692: Fix resource leak in urllib.request when talking to an HTTP + server that does not include a "Connection: close" header in its responses. + - Issue #12034: Fix bogus caching of result in check_GetFinalPathNameByHandle. Patch by Atsuo Ishimoto.