diff --git a/src/calibre/srv/tests/web_sockets.py b/src/calibre/srv/tests/web_sockets.py index e3672c7659..ad361de217 100644 --- a/src/calibre/srv/tests/web_sockets.py +++ b/src/calibre/srv/tests/web_sockets.py @@ -251,3 +251,9 @@ class WebSocketTest(BaseTest): {'opcode':opcode, 'payload':'f1', 'fin':0}, {'opcode':opcode, 'payload':'f2'} ], close_code=PROTOCOL_ERROR, send_close=False) + fragments = 'frag1 frag2'.split() + client = server.connect() + self.simple_test(client, [ + {'opcode':TEXT, 'payload':fragments[0], 'fin':0}, {'opcode':TEXT, 'payload':fragments[1]} + ], [''.join(fragments)]) + diff --git a/src/calibre/srv/web_socket.py b/src/calibre/srv/web_socket.py index 81684b00e3..b6d8f30f23 100644 --- a/src/calibre/srv/web_socket.py +++ b/src/calibre/srv/web_socket.py @@ -317,16 +317,6 @@ class WebSocketConnection(HTTPConnection): message_starting = self.current_recv_opcode is None if message_starting: self.current_recv_opcode = opcode - else: - if opcode != CONTINUATION: - # This is a new message - try: - self.handle_websocket_data('' if self.current_recv_opcode == TEXT else b'', False, True) - except Exception as err: - self.log.exception('Error in WebSockets data handler:') - self.websocket_close(UNEXPECTED_ERROR, 'Unexpected error in handler: %r' % as_unicode(err)) - self.current_recv_opcode = opcode - message_starting = True message_finished = frame_finished and is_final_frame_of_message if message_finished: self.current_recv_opcode = None