File do-not-raise-exceptions-on-unknown-status-codes.patch of Package python-tornado.43030
From beb78f0fa5cd4ecb47274d15ff0b5a32526b18df Mon Sep 17 00:00:00 2001
From: Andrey Sumin <an.sumin@hh.ru>
Date: Fri, 24 Mar 2017 17:03:27 +0300
Subject: [PATCH] do not raise exceptions on unknown status codes
---
tornado/test/web_test.py | 10 +++++++---
tornado/web.py | 11 ++---------
2 files changed, 9 insertions(+), 12 deletions(-)
Index: tornado-4.5.3/tornado/test/web_test.py
===================================================================
--- tornado-4.5.3.orig/tornado/test/web_test.py
+++ tornado-4.5.3/tornado/test/web_test.py
@@ -918,6 +918,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")
Index: tornado-4.5.3/tornado/web.py
===================================================================
--- tornado-4.5.3.orig/tornado/web.py
+++ tornado-4.5.3/tornado/web.py
@@ -333,10 +333,7 @@ class RequestHandler(object):
reason = "Unknown"
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."""
@@ -1585,11 +1582,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())