From 05dadf779f31812ef9143785f64c1d904f1b438f Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Tue, 10 May 2022 07:04:04 +0200 Subject: [PATCH 1/3] Add code on events.CloseConnection for wsproto --- uvicorn/protocols/websockets/wsproto_impl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uvicorn/protocols/websockets/wsproto_impl.py b/uvicorn/protocols/websockets/wsproto_impl.py index 6e4f505f1..35f88a720 100644 --- a/uvicorn/protocols/websockets/wsproto_impl.py +++ b/uvicorn/protocols/websockets/wsproto_impl.py @@ -91,7 +91,7 @@ def data_received(self, data): self.transport.write(self.conn.send(err.event_hint)) self.transport.close() else: - self.handle_no_connect(events.CloseConnection()) + self.handle_no_connect(events.CloseConnection(code=1007)) else: self.handle_events() From cd9018be40b040090e4dfd1fa17bf2532365a07f Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Sat, 29 Oct 2022 21:23:22 +0200 Subject: [PATCH 2/3] Update uvicorn/protocols/websockets/wsproto_impl.py Co-authored-by: Tom Christie --- uvicorn/protocols/websockets/wsproto_impl.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/uvicorn/protocols/websockets/wsproto_impl.py b/uvicorn/protocols/websockets/wsproto_impl.py index 35f88a720..bc9651fe7 100644 --- a/uvicorn/protocols/websockets/wsproto_impl.py +++ b/uvicorn/protocols/websockets/wsproto_impl.py @@ -91,7 +91,9 @@ def data_received(self, data): self.transport.write(self.conn.send(err.event_hint)) self.transport.close() else: - self.handle_no_connect(events.CloseConnection(code=1007)) + # Response with the "1002 Protocol Error" code. + # See https://www.iana.org/assignments/websocket/websocket.xhtml#close-code-number + self.handle_no_connect(events.CloseConnection(code=1002)) else: self.handle_events() From a5dcf5d957466e13f6b15779073e8cfb967b8877 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Sat, 29 Oct 2022 22:04:24 +0200 Subject: [PATCH 3/3] RemoteProtocolError always have an event_hint --- uvicorn/protocols/websockets/wsproto_impl.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/uvicorn/protocols/websockets/wsproto_impl.py b/uvicorn/protocols/websockets/wsproto_impl.py index bc9651fe7..65af7d308 100644 --- a/uvicorn/protocols/websockets/wsproto_impl.py +++ b/uvicorn/protocols/websockets/wsproto_impl.py @@ -87,13 +87,8 @@ def data_received(self, data): try: self.conn.receive_data(data) except RemoteProtocolError as err: - if err.event_hint is not None: - self.transport.write(self.conn.send(err.event_hint)) - self.transport.close() - else: - # Response with the "1002 Protocol Error" code. - # See https://www.iana.org/assignments/websocket/websocket.xhtml#close-code-number - self.handle_no_connect(events.CloseConnection(code=1002)) + self.transport.write(self.conn.send(err.event_hint)) + self.transport.close() else: self.handle_events()