mirror of https://github.com/python/cpython
Bug #767111: fix long-standing bug in urllib which caused an
AttributeError instead of an IOError when the server's response didn't contain a valid HTTP status line.
This commit is contained in:
parent
90fd76a2b4
commit
f66b6039c1
|
@ -122,6 +122,15 @@ class urlopen_HttpTests(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
self.unfakehttp()
|
self.unfakehttp()
|
||||||
|
|
||||||
|
def test_empty_socket(self):
|
||||||
|
"""urlopen() raises IOError if the underlying socket does not send any
|
||||||
|
data. (#1680230) """
|
||||||
|
self.fakehttp('')
|
||||||
|
try:
|
||||||
|
self.assertRaises(IOError, urllib.urlopen, 'http://something')
|
||||||
|
finally:
|
||||||
|
self.unfakehttp()
|
||||||
|
|
||||||
class urlretrieve_FileTests(unittest.TestCase):
|
class urlretrieve_FileTests(unittest.TestCase):
|
||||||
"""Test urllib.urlretrieve() on local files"""
|
"""Test urllib.urlretrieve() on local files"""
|
||||||
|
|
||||||
|
|
|
@ -326,6 +326,10 @@ class URLopener:
|
||||||
if data is not None:
|
if data is not None:
|
||||||
h.send(data)
|
h.send(data)
|
||||||
errcode, errmsg, headers = h.getreply()
|
errcode, errmsg, headers = h.getreply()
|
||||||
|
if errcode == -1:
|
||||||
|
# something went wrong with the HTTP status line
|
||||||
|
raise IOError, ('http protocol error', 0,
|
||||||
|
'got a bad status line', None)
|
||||||
fp = h.getfile()
|
fp = h.getfile()
|
||||||
if errcode == 200:
|
if errcode == 200:
|
||||||
return addinfourl(fp, headers, "http:" + url)
|
return addinfourl(fp, headers, "http:" + url)
|
||||||
|
@ -413,6 +417,10 @@ class URLopener:
|
||||||
if data is not None:
|
if data is not None:
|
||||||
h.send(data)
|
h.send(data)
|
||||||
errcode, errmsg, headers = h.getreply()
|
errcode, errmsg, headers = h.getreply()
|
||||||
|
if errcode == -1:
|
||||||
|
# something went wrong with the HTTP status line
|
||||||
|
raise IOError, ('http protocol error', 0,
|
||||||
|
'got a bad status line', None)
|
||||||
fp = h.getfile()
|
fp = h.getfile()
|
||||||
if errcode == 200:
|
if errcode == 200:
|
||||||
return addinfourl(fp, headers, "https:" + url)
|
return addinfourl(fp, headers, "https:" + url)
|
||||||
|
|
|
@ -170,6 +170,10 @@ Core and builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Bug #767111: fix long-standing bug in urllib which caused an
|
||||||
|
AttributeError instead of an IOError when the server's response didn't
|
||||||
|
contain a valid HTTP status line.
|
||||||
|
|
||||||
- Patch #957650: "%var%" environment variable references are now properly
|
- Patch #957650: "%var%" environment variable references are now properly
|
||||||
expanded in ntpath.expandvars(), also "~user" home directory references
|
expanded in ntpath.expandvars(), also "~user" home directory references
|
||||||
are recognized and handled on Windows.
|
are recognized and handled on Windows.
|
||||||
|
|
Loading…
Reference in New Issue