From 89c67e872ca9a5b6021b1ed37aca3183f38131c9 Mon Sep 17 00:00:00 2001 From: norohind <60548839+norohind@users.noreply.github.com> Date: Sun, 13 Nov 2022 19:35:38 +0300 Subject: [PATCH] Net: handle force close conn (RST?) --- NetworkTransport.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/NetworkTransport.py b/NetworkTransport.py index 43267e2..682ddfc 100644 --- a/NetworkTransport.py +++ b/NetworkTransport.py @@ -53,14 +53,21 @@ class NetworkTransport(TransportABC): conn.close() def _on_socket_receive(self, conn: socket.socket, mask: int): - data = conn.recv(1000) - if not data: - self._close_conn(conn) - return + try: + data = conn.recv(1000) - for data_part in data.split(b'\n'): - if len(data_part) != 0: - self._handle_received_event(data_part, conn) + except ConnectionResetError: + logger.opt(exception=True).warning(f'Closing connection due to RST?') + self._close_conn(conn) + + else: + if not data: + self._close_conn(conn) + return + + for data_part in data.split(b'\n'): + if len(data_part) != 0: + self._handle_received_event(data_part, conn) def _handle_received_event(self, data: bytes, conn: socket.socket): try: