From: Senthil Kumaran Date: Wed, 27 Jul 2011 01:37:17 +0000 (+0800) Subject: merge from 3.2 - fix urlopen behavior on sites which do not send (or obsfuscates... X-Git-Tag: v2.7.3rc1~573 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7d7702b5819f2ef262353055f265c7d8d1f39823;p=thirdparty%2FPython%2Fcpython.git merge from 3.2 - fix urlopen behavior on sites which do not send (or obsfuscates) Connection: Close header. --- diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py index 5ffba87fdfc8..1375cdada008 100644 --- a/Lib/test/test_urllib2net.py +++ b/Lib/test/test_urllib2net.py @@ -186,6 +186,14 @@ class OtherNetworkTests(unittest.TestCase): opener.open(request) self.assertEqual(request.get_header('User-agent'),'Test-Agent') + def test_sites_no_connection_close(self): + # Some sites do not send Connection: close header. + # Verify that those work properly. (#issue12576) + + req = urllib2.urlopen('http://www.imdb.com') + res = req.read() + self.assertTrue(res) + def _test_urls(self, urls, handlers, retry=True): import time import logging diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 2bce745e6372..a0065b5b84df 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -1166,14 +1166,14 @@ class AbstractHTTPHandler(BaseHandler): try: h.request(req.get_method(), req.get_selector(), req.data, headers) + except socket.error, err: # XXX what error? + h.close() + raise URLError(err) + else: try: r = h.getresponse(buffering=True) - except TypeError: #buffering kw not supported + except TypeError: # buffering kw not supported 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.