refactor(connector.py): avoid recursion in connect()

This commit is contained in:
2025-09-23 13:50:48 +02:00
parent ae69e9e956
commit b8333b6408

View File

@@ -68,29 +68,35 @@ class Connector:
return False
def connect(self, retry_interval: int = 1) -> None:
self.logger.debug(
f"Connecting to {self.host}:{self.port} with timeout {self.connect_timeout}s..."
)
try:
self.socket.settimeout(self.connect_timeout)
self.socket.connect((self.host, self.port))
self.socket.settimeout(self.socket_timeout)
self.logger.info(f"[+] Connected to {self.host}:{self.port}")
self.send_hello()
except (
socket.timeout,
ConnectionRefusedError,
ConnectionAbortedError,
) as e:
self.logger.error(
f"[!] Connection to {self.host}:{self.port} failed: {e}"
def connect(self) -> None:
retry_interval: int = 1
connected: bool = False
while not connected:
self.logger.debug(
f"[.] Connecting to {self.host}:{self.port} with timeout {self.connect_timeout}s..."
)
self.logger.info(
f"[.] Retrying connection in {retry_interval} s..."
)
time.sleep(retry_interval)
self.connect(retry_interval=min(30, retry_interval * 2))
try:
self.socket.settimeout(self.connect_timeout)
self.socket.connect((self.host, self.port))
self.socket.settimeout(self.socket_timeout)
self.logger.info(f"[+] Connected to {self.host}:{self.port}")
self.send_hello()
connected = True
except (
socket.timeout,
ConnectionRefusedError,
ConnectionAbortedError,
) as e:
self.logger.error(
f"[!] Connection to {self.host}:{self.port} failed: {e}"
)
self.logger.info(
f"[.] Retrying connection in {retry_interval} s..."
)
time.sleep(retry_interval)
retry_interval = min(
retry_interval * 2, 30
) # exponential backoff
def send(self, data: bytes, no_check_ack: bool = False) -> None:
self.logger.debug(f"[>] Sending data: {data}")