]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
do not raise exceptions on unknown status codes 1979/head
authorAndrey Sumin <an.sumin@hh.ru>
Fri, 24 Mar 2017 14:03:27 +0000 (17:03 +0300)
committerAndrew Sumin <sumin.andrew@gmail.com>
Mon, 27 Mar 2017 08:46:33 +0000 (11:46 +0300)
tornado/test/web_test.py
tornado/web.py

index ff722c6530c63e2b94774ae173a84e3ae5f45fd8..60f0be705e3089375f08c92dfda35a4396399fdf 100644 (file)
@@ -917,6 +917,10 @@ class ErrorResponseTest(WebTestCase):
             self.assertEqual(response.code, 503)
             self.assertTrue(b"503: Service Unavailable" in response.body)
 
+            response = self.fetch("/default?status=435")
+            self.assertEqual(response.code, 435)
+            self.assertTrue(b"435: Unknown" in response.body)
+
     def test_write_error(self):
         with ExpectLog(app_log, "Uncaught exception"):
             response = self.fetch("/write_error")
@@ -1489,9 +1493,9 @@ class StatusReasonTest(SimpleHandlerTestCase):
         response = self.fetch("/?code=682&reason=Bar")
         self.assertEqual(response.code, 682)
         self.assertEqual(response.reason, "Bar")
-        with ExpectLog(app_log, 'Uncaught exception'):
-            response = self.fetch("/?code=682")
-        self.assertEqual(response.code, 500)
+        response = self.fetch("/?code=682")
+        self.assertEqual(response.code, 682)
+        self.assertEqual(response.reason, "Unknown")
 
 
 @wsgi_safe
index 4e932b6e773fe03ede1af168e58ce46fc03c9628..4821119abb23dbf1e4ff19012508203e1a5a0ade 100644 (file)
@@ -319,10 +319,7 @@ class RequestHandler(object):
         if reason is not None:
             self._reason = escape.native_str(reason)
         else:
-            try:
-                self._reason = httputil.responses[status_code]
-            except KeyError:
-                raise ValueError("unknown status code %d" % status_code)
+            self._reason = httputil.responses.get(status_code, "Unknown")
 
     def get_status(self):
         """Returns the status code for our response."""
@@ -1558,11 +1555,7 @@ class RequestHandler(object):
             # send a response.
             return
         if isinstance(e, HTTPError):
-            if e.status_code not in httputil.responses and not e.reason:
-                gen_log.error("Bad HTTP status code: %d", e.status_code)
-                self.send_error(500, exc_info=sys.exc_info())
-            else:
-                self.send_error(e.status_code, exc_info=sys.exc_info())
+            self.send_error(e.status_code, exc_info=sys.exc_info())
         else:
             self.send_error(500, exc_info=sys.exc_info())