diff --git a/src/judas_client/connector.py b/src/judas_client/connector.py index d78db7b..bbc4794 100644 --- a/src/judas_client/connector.py +++ b/src/judas_client/connector.py @@ -145,8 +145,24 @@ class Connector: self.socket.connect((self.host, self.port)) connected = True except BlockingIOError: - # connection in progress - connected = True + # connection in progress, wait for socket to become writable + self.logger.debug( + "[.] Connection in progress, waiting for completion..." + ) + events = self.selector.select(timeout=1) + for _, mask in events: + if mask & selectors.EVENT_WRITE: + err = self.socket.getsockopt( + socket.SOL_SOCKET, socket.SO_ERROR + ) + if err == 0: + connected = True + else: + self.logger.error( + f"[!] Connection failed with error code: {err}" + ) + if not connected: + continue except socket.error as e: self.logger.error(f"[!] Connection error: {e}") self.logger.debug(f"[.] Retrying in {delay} seconds...")