Skip to content

Commit cc74578

Browse files
committed
Merge pull request tornadoweb#707 from protoss-player/master
websocket_connect should not hang on HTTP errors
2 parents f229efb + 1ebd245 commit cc74578

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

tornado/test/websocket_test.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,14 @@ def test_websocket_callbacks(self):
3232
ws.read_message(self.stop)
3333
response = self.wait().result()
3434
self.assertEqual(response, 'hello')
35+
36+
@gen_test
37+
def test_websocket_fail(self):
38+
try:
39+
ws = yield websocket_connect(
40+
'ws://localhost:%d/no_websock' % self.get_http_port(),
41+
io_loop=self.io_loop)
42+
except:
43+
pass
44+
else:
45+
self.fail('Should\'ve caught an Exception')

tornado/websocket.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,9 @@ def __init__(self, io_loop, request):
746746
def _on_close(self):
747747
self.on_message(None)
748748

749+
def _on_body(self, body):
750+
self.connect_future.set_exception(Exception('Could not connect.'))
751+
749752
def _handle_1xx(self, code):
750753
assert code == 101
751754
assert self.headers['Upgrade'].lower() == 'websocket'

0 commit comments

Comments
 (0)