From d793c521fedc3512a4e6099e7f2f8f2b48ab3aea Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 16 Sep 2026 15:41:58 -0400 Subject: [PATCH] Decrease max input of ssh connection Specify connect and login timeouts to avoid sessions being held open. Also, in blocking_scan, wrap everything so that finally can ensure the scan is recognized as complete. --- confluent_server/confluent/discovery/core.py | 24 +++++++++++--------- confluent_server/confluent/sshclient.py | 4 +++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/confluent_server/confluent/discovery/core.py b/confluent_server/confluent/discovery/core.py index 0fc8ccca..5520f0fb 100644 --- a/confluent_server/confluent/discovery/core.py +++ b/confluent_server/confluent/discovery/core.py @@ -1738,17 +1738,19 @@ async def blocking_scan(aggressive=False): else: pingscan_result = {} gencheckers = [] - for iface in pingscan_result: - for ipa in pingscan_result[iface]: - hwaddr = await neighutil.get_hwaddr(ipa) - if not hwaddr: - continue - if hwaddr in known_info: - continue - gencheckers.append(generic_eval(ipa, hwaddr)) - if gencheckers: - await asyncio.gather(*gencheckers, return_exceptions=True) - scanner = None + try: + for iface in pingscan_result: + for ipa in pingscan_result[iface]: + hwaddr = await neighutil.get_hwaddr(ipa) + if not hwaddr: + continue + if hwaddr in known_info: + continue + gencheckers.append(generic_eval(ipa, hwaddr)) + if gencheckers: + await asyncio.gather(*gencheckers, return_exceptions=True) + finally: + scanner = None async def generic_eval(address, hwaddr=None): diff --git a/confluent_server/confluent/sshclient.py b/confluent_server/confluent/sshclient.py index f9b38630..cae64f81 100644 --- a/confluent_server/confluent/sshclient.py +++ b/confluent_server/confluent/sshclient.py @@ -123,7 +123,9 @@ def connect(target, context=None, disable_hostkey_validation=False, known_hosts= sco = asyncssh.SSHClientConnectionOptions( client_factory=make_client, x509_trusted_cert_paths=None, - known_hosts=known_hosts) + known_hosts=known_hosts, + login_timeout=3, + connect_timeout=2) return asyncssh.connect(target, options=sco, **kwargs)