Commit 9fab9f10 authored by Facundo Batista's avatar Facundo Batista

As specified in RFC 2616, 2xx code indicates that the client's

request was successfully received, understood, and accepted.
Now in these cases no error is raised. Also fixed tests.
parent 9f87128d
...@@ -766,16 +766,24 @@ class HandlerTests(unittest.TestCase): ...@@ -766,16 +766,24 @@ class HandlerTests(unittest.TestCase):
url = "http://example.com/" url = "http://example.com/"
req = Request(url) req = Request(url)
# 200 OK is passed through # all 2xx are passed through
r = MockResponse(200, "OK", {}, "", url) r = MockResponse(200, "OK", {}, "", url)
newr = h.http_response(req, r) newr = h.http_response(req, r)
self.assert_(r is newr) self.assert_(r is newr)
self.assert_(not hasattr(o, "proto")) # o.error not called self.assert_(not hasattr(o, "proto")) # o.error not called
r = MockResponse(202, "Accepted", {}, "", url)
newr = h.http_response(req, r)
self.assert_(r is newr)
self.assert_(not hasattr(o, "proto")) # o.error not called
r = MockResponse(206, "Partial content", {}, "", url)
newr = h.http_response(req, r)
self.assert_(r is newr)
self.assert_(not hasattr(o, "proto")) # o.error not called
# anything else calls o.error (and MockOpener returns None, here) # anything else calls o.error (and MockOpener returns None, here)
r = MockResponse(201, "Created", {}, "", url) r = MockResponse(502, "Bad gateway", {}, "", url)
self.assert_(h.http_response(req, r) is None) self.assert_(h.http_response(req, r) is None)
self.assertEqual(o.proto, "http") # o.error called self.assertEqual(o.proto, "http") # o.error called
self.assertEqual(o.args, (req, r, 201, "Created", {})) self.assertEqual(o.args, (req, r, 502, "Bad gateway", {}))
def test_cookies(self): def test_cookies(self):
cj = MockCookieJar() cj = MockCookieJar()
......
...@@ -487,7 +487,9 @@ class HTTPErrorProcessor(BaseHandler): ...@@ -487,7 +487,9 @@ class HTTPErrorProcessor(BaseHandler):
def http_response(self, request, response): def http_response(self, request, response):
code, msg, hdrs = response.code, response.msg, response.info() code, msg, hdrs = response.code, response.msg, response.info()
if code not in (200, 206): # According to RFC 2616, "2xx" code indicates that the client's
# request was successfully received, understood, and accepted.
if not (200 <= code < 300):
response = self.parent.error( response = self.parent.error(
'http', request, response, code, msg, hdrs) 'http', request, response, code, msg, hdrs)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment