From 7a7287c8c7b430a169cbe0b78a1031623ab18e2f Mon Sep 17 00:00:00 2001 From: zyxkad Date: Sat, 10 Aug 2024 00:50:48 -0700 Subject: [PATCH] catch the OSError when shutdown --- loginproxy/server.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/loginproxy/server.py b/loginproxy/server.py index 195bdd3..e310343 100644 --- a/loginproxy/server.py +++ b/loginproxy/server.py @@ -507,7 +507,10 @@ def stop(self): self._conns.clear() with self._lock: for s in self.__sockets: - s.shutdown(socket.SHUT_RDWR) + try: + s.shutdown(socket.SHUT_RDWR) + except OSError: # for WinError 10057 + pass s.close() self.__sockets.clear() for c in self._uconns: @@ -517,7 +520,10 @@ def stop(self): def __del__(self): with self._lock: for s in self.__sockets: - s.shutdown(socket.SHUT_RDWR) + try: + s.shutdown(socket.SHUT_RDWR) + except OSError: # for WinError 10057 + pass s.close() for c in self._uconns: c.close() @@ -636,17 +642,18 @@ def login_parser_1_8(pkt: PacketReader, login_data: dict): @staticmethod def login_parser_1_19(pkt: PacketReader, login_data: dict): + protocol = login_data['protocol'] login_data['name'] = pkt.read_string() - if login_data['protocol'] <= Protocol.V1_19_2: + if protocol <= Protocol.V1_19_2: has_sig = pkt.read_bool() login_data['has_sig'] = has_sig if has_sig: login_data['timestamp'] = pkt.read_long() login_data['pubkey'] = pkt.read(pkt.read_varint()) login_data['sign'] = pkt.read(pkt.read_varint()) - if login_data['protocol'] >= Protocol.V1_20_2: + if protocol >= Protocol.V1_20_2: login_data['uuid'] = pkt.read_uuid() - elif login_data['protocol'] >= Protocol.V1_19_1: # Fix issue #1 + elif protocol >= Protocol.V1_19_1: # Fix issue #1 has_uuid = pkt.read_bool() login_data['has_uuid'] = has_uuid if has_uuid: