[Python-checkins] r54377 - in python/branches/release25-maint: Lib/test/test_urllib.py Lib/urllib.py Misc/NEWS
georg.brandl
python-checkins at python.org
Wed Mar 14 09:27:58 CET 2007
Author: georg.brandl
Date: Wed Mar 14 09:27:57 2007
New Revision: 54377
Modified:
python/branches/release25-maint/Lib/test/test_urllib.py
python/branches/release25-maint/Lib/urllib.py
python/branches/release25-maint/Misc/NEWS
Log:
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.
(backport from rev. 54376)
Modified: python/branches/release25-maint/Lib/test/test_urllib.py
==============================================================================
--- python/branches/release25-maint/Lib/test/test_urllib.py (original)
+++ python/branches/release25-maint/Lib/test/test_urllib.py Wed Mar 14 09:27:57 2007
@@ -122,6 +122,15 @@
finally:
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):
"""Test urllib.urlretrieve() on local files"""
Modified: python/branches/release25-maint/Lib/urllib.py
==============================================================================
--- python/branches/release25-maint/Lib/urllib.py (original)
+++ python/branches/release25-maint/Lib/urllib.py Wed Mar 14 09:27:57 2007
@@ -326,6 +326,10 @@
if data is not None:
h.send(data)
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()
if errcode == 200:
return addinfourl(fp, headers, "http:" + url)
@@ -413,6 +417,10 @@
if data is not None:
h.send(data)
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()
if errcode == 200:
return addinfourl(fp, headers, "https:" + url)
Modified: python/branches/release25-maint/Misc/NEWS
==============================================================================
--- python/branches/release25-maint/Misc/NEWS (original)
+++ python/branches/release25-maint/Misc/NEWS Wed Mar 14 09:27:57 2007
@@ -205,6 +205,10 @@
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 #1449244: Support Unicode strings in
email.message.Message.{set_charset,get_content_charset}.
More information about the Python-checkins
mailing list