diff options
author | Senthil Kumaran <orsenthil@gmail.com> | 2010-04-28 17:25:58 (GMT) |
---|---|---|
committer | Senthil Kumaran <orsenthil@gmail.com> | 2010-04-28 17:25:58 (GMT) |
commit | 379eaac7a7850ff0e05c2af161cda497e639718a (patch) | |
tree | f1e284b38d1920955a2406fb39d17a3bde2de019 | |
parent | d54cdf038a480d047fcfcf6779bfcecf83953b90 (diff) | |
download | cpython-379eaac7a7850ff0e05c2af161cda497e639718a.zip cpython-379eaac7a7850ff0e05c2af161cda497e639718a.tar.gz cpython-379eaac7a7850ff0e05c2af161cda497e639718a.tar.bz2 |
Merged revisions 80583 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r80583 | senthil.kumaran | 2010-04-28 22:50:43 +0530 (Wed, 28 Apr 2010) | 3 lines
Fixed Issue6312 - httplib fails with HEAD requests to pages with "transfer-encoding: chunked"
........
-rw-r--r-- | Doc/library/httplib.rst | 16 | ||||
-rw-r--r-- | Lib/httplib.py | 3 | ||||
-rw-r--r-- | Lib/test/test_httplib.py | 17 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
4 files changed, 39 insertions, 0 deletions
diff --git a/Doc/library/httplib.rst b/Doc/library/httplib.rst index e48c95c..da2169c 100644 --- a/Doc/library/httplib.rst +++ b/Doc/library/httplib.rst @@ -541,6 +541,22 @@ Here is an example session that uses the ``GET`` method:: >>> data2 = r2.read() >>> conn.close() +Here is an example session that uses ``HEAD`` method. Note that ``HEAD`` method +never returns any data. :: + + + >>> import httplib + >>> conn = httplib.HTTPConnection("www.python.org") + >>> conn.request("HEAD","/index.html") + >>> res = conn.getresponse() + >>> print res.status, res.reason + 200 OK + >>> data = res.read() + >>> print len(data) + 0 + >>> data == '' + True + Here is an example session that shows how to ``POST`` requests:: >>> import httplib, urllib diff --git a/Lib/httplib.py b/Lib/httplib.py index e5ef8b7..262d602 100644 --- a/Lib/httplib.py +++ b/Lib/httplib.py @@ -514,6 +514,9 @@ class HTTPResponse: if self.fp is None: return '' + if self._method == 'HEAD': + return '' + if self.chunked: return self._read_chunked(amt) diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 252834b..cc3f590 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -207,6 +207,23 @@ class BasicTest(TestCase): finally: resp.close() + def test_chunked_head(self): + chunked_start = ( + 'HTTP/1.1 200 OK\r\n' + 'Transfer-Encoding: chunked\r\n\r\n' + 'a\r\n' + 'hello world\r\n' + '1\r\n' + 'd\r\n' + ) + sock = FakeSocket(chunked_start + '0\r\n') + resp = httplib.HTTPResponse(sock, method="HEAD") + resp.begin() + self.assertEquals(resp.read(), '') + self.assertEquals(resp.status, 200) + self.assertEquals(resp.reason, 'OK') + resp.close() + def test_negative_content_length(self): sock = FakeSocket('HTTP/1.1 200 OK\r\n' 'Content-Length: -1\r\n\r\nHello\r\n') @@ -33,6 +33,9 @@ Core and Builtins Library ------- +- Issue #6312: Fixed http HEAD request when the transfer encoding is chunked. + It should correctly return an empty response now. + - Issue #8086: In :func:`ssl.DER_cert_to_PEM_cert()`, fix missing newline before the certificate footer. Patch by Kyle VanderBeek. |