diff --git a/src/judas_client/connector.py b/src/judas_client/connector.py index b9b7738..db3fcfb 100644 --- a/src/judas_client/connector.py +++ b/src/judas_client/connector.py @@ -54,6 +54,8 @@ class Connector: self.inbound_buffer: bytes = b"" self.outbound_buffer: bytes = b"" + self.running: bool = True + self.on_message: Callable[[Message], None] = on_message def _send_outbound(self) -> None: @@ -82,7 +84,9 @@ class Connector: self.inbound_buffer += data else: self.logger.debug("[!] Connection closed by the server.") - self.reconnect() + # TODO: close only when instructed by server + self.close() + self.running = False except socket.error as e: self.logger.error(f"[!] Socket error: {e}") self.reconnect() @@ -97,7 +101,10 @@ class Connector: def close(self) -> None: """Close the connection and clean up resources.""" self.logger.debug("[*] Closing connection...") - self.selector.unregister(self.socket) + try: + self.selector.unregister(self.socket) + except Exception as e: + self.logger.error(f"[!] Error unregistering socket: {e}") self.socket.close() self.logger.debug("[.] Connection closed.") @@ -141,7 +148,7 @@ class Connector: """Run the main event loop.""" self.connect() try: - while True: + while self.running: events = self.selector.select(timeout=1) for key, mask in events: if mask & selectors.EVENT_READ: