From 1980ff25634949b21968bcb3363ebc77405e98fe Mon Sep 17 00:00:00 2001 From: Upstream Data Date: Fri, 24 Nov 2023 23:32:22 -0700 Subject: [PATCH] bug: do additional checks on refused connection when scanning. --- pyasic/network/__init__.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pyasic/network/__init__.py b/pyasic/network/__init__.py index d29ae8b9..39c5a0c9 100644 --- a/pyasic/network/__init__.py +++ b/pyasic/network/__init__.py @@ -164,9 +164,15 @@ class MinerNetwork: ip: ipaddress.ip_address, semaphore: asyncio.Semaphore ) -> Union[None, AnyMiner]: async with semaphore: - miner = await ping_and_get_miner(ip) - if miner: - return miner + try: + return await ping_and_get_miner(ip) + except ConnectionRefusedError: + tasks = [ping_and_get_miner(ip, port=port) for port in [4028, 4029, 8889]] + for miner in asyncio.as_completed(tasks): + try: + return await miner + except ConnectionRefusedError: + pass async def ping_and_get_miner( @@ -188,8 +194,8 @@ async def ping_and_get_miner( except asyncio.exceptions.TimeoutError: # ping failed if we time out continue - except OSError: - continue + except ConnectionRefusedError: + raise except Exception as e: logging.warning(f"{str(ip)}: Unhandled ping exception: {e}") return