From: Jungkook Park Date: Thu, 21 Sep 2017 17:14:51 +0000 (+0900) Subject: fix websocket handshake failure causes an exception X-Git-Tag: v4.5.3~1^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7f9f0b9116ddb09915e7e783fb9cbc82546b301;p=thirdparty%2Ftornado.git fix websocket handshake failure causes an exception --- diff --git a/tornado/test/websocket_test.py b/tornado/test/websocket_test.py index d47a74e65..95a5ecd4c 100644 --- a/tornado/test/websocket_test.py +++ b/tornado/test/websocket_test.py @@ -189,6 +189,13 @@ class WebSocketTest(WebSocketBaseTestCase): response = self.fetch('/echo') self.assertEqual(response.code, 400) + def test_missing_websocket_key(self): + response = self.fetch('/echo', + headers={'Connection': 'Upgrade', + 'Upgrade': 'WebSocket', + 'Sec-WebSocket-Version': '13'}) + self.assertEqual(response.code, 400) + def test_bad_websocket_version(self): response = self.fetch('/echo', headers={'Connection': 'Upgrade', diff --git a/tornado/websocket.py b/tornado/websocket.py index 69437ee4e..0e9d339f5 100644 --- a/tornado/websocket.py +++ b/tornado/websocket.py @@ -616,6 +616,14 @@ class WebSocketProtocol13(WebSocketProtocol): def accept_connection(self): try: self._handle_websocket_headers() + except ValueError: + self.handler.set_status(400) + log_msg = "Missing/Invalid WebSocket headers" + self.handler.finish(log_msg) + gen_log.debug(log_msg) + return + + try: self._accept_connection() except ValueError: gen_log.debug("Malformed WebSocket request received",