diff --git a/src/core/Client.py b/src/core/Client.py index 3e5fd0f..415a6c9 100644 --- a/src/core/Client.py +++ b/src/core/Client.py @@ -194,7 +194,13 @@ class Client: async def _recv(self, one=False): while self.__alive: try: - header = await self.__reader.read(4) + header = b"" + while len(header) < 4 and self.__alive: + h = await self.__reader.read(4) + if not h: + break + else: + header += h int_header = int.from_bytes(header, byteorder='little', signed=True) @@ -219,9 +225,14 @@ class Client: self.__packets_queue.append(None) continue - data = await self.__reader.read(int_header) + data = b"" + while len(data) < int_header and self.__alive: + buffer = await self.__reader.read(int_header - len(data)) + if not buffer: + break + else: + data += buffer - # self.log.debug(f"int_header: {int_header}; data: `{data}`;") abg = b"ABG:" if len(data) > len(abg) and data.startswith(abg): data = zlib.decompress(data[len(abg):]) diff --git a/src/core/udp_server.py b/src/core/udp_server.py index 5b98bb9..12fdc28 100644 --- a/src/core/udp_server.py +++ b/src/core/udp_server.py @@ -100,8 +100,8 @@ class UDPServer(asyncio.DatagramTransport): await asyncio.sleep(0.2) except OSError as e: - self.run = False - self.Core.run = False + # self.run = False + # self.Core.run = False self.log.error(f"Cannot bind port or other error: {e}") except Exception as e: self.log.error(f"Error: {e}")