diff --git a/src/judas_server/backend/client.py b/src/judas_server/backend/client.py index d397760..1c20fa2 100644 --- a/src/judas_server/backend/client.py +++ b/src/judas_server/backend/client.py @@ -14,7 +14,10 @@ class Client: """Represents a client.""" def __init__( - self, id: str | None, addr: tuple[str, int], socket: socket.socket + self, + id: str | None, + addr: tuple[str, int] | None, + socket: socket.socket | None, ) -> None: """Initialize the client. @@ -33,13 +36,15 @@ class Client: self.last_seen: float = 0.0 # unix timestanp of last inbound message self.status: ClientStatus = ClientStatus.PENDING - self.socket: socket.socket = socket - self.addr: tuple[str, int] = addr + self.socket: socket.socket | None = socket + self.addr: tuple[str, int] | None = addr self.inbound: bytes = b"" self.outbound: bytes = b"" def __str__(self) -> str: - return f"Client({self.id} ({self.addr[0]}:{self.addr[1]}))" + if self.addr: + return f"Client({self.id} ({self.addr[0]}:{self.addr[1]}))" + return f"Client({self.id} (not connected))" def __repr__(self) -> str: return f"Client({self.id}, {self.addr})" @@ -47,6 +52,11 @@ class Client: def disconnect(self) -> None: """Disconnect the client and close the socket.""" self.logger.debug(f"Disconnecting Client {self}...") + if self.socket is None: + self.logger.warning( + f"Client {self} not connected, nothing to disconnect." + ) + return try: self.socket.close() except Exception as e: