diff --git a/requests/models.py b/requests/models.py index 0b4958eb..076eeddb 100644 --- a/requests/models.py +++ b/requests/models.py @@ -681,6 +681,9 @@ class Response(object): while 1: #XXX correct line size? (httplib has 64kb, seems insane) pending_bytes = fp.readline(40).strip() + if pending_bytes == '': + # No content, like a HEAD request. Break out. + break pending_bytes = int(pending_bytes, 16) if pending_bytes == 0: break diff --git a/tests/test_requests.py b/tests/test_requests.py index b1d1304d..a0395aea 100755 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -801,7 +801,5 @@ class RequestsTestSuite(TestSetup, unittest.TestCase): r = requests.get(httpbin('status', '404')) r.text - - if __name__ == '__main__': unittest.main() diff --git a/tests/test_requests_ext.py b/tests/test_requests_ext.py index 1e25dbe6..2102a5ea 100644 --- a/tests/test_requests_ext.py +++ b/tests/test_requests_ext.py @@ -53,6 +53,12 @@ class RequestsTestSuite(unittest.TestCase): url = u'http://blip.fm/~1abvfu' requests.get(url) + + def test_chunked_head_redirect(self): + url = "http://t.co/NFrx0zLG" + r = requests.head(url, allow_redirects=True) + self.assertEqual(r.status_code, 200) + if __name__ == '__main__': unittest.main()