From 329ff15e747255259cc638356c258c784bb47314 Mon Sep 17 00:00:00 2001 From: Andrew Pimenov Date: Sun, 9 Aug 2026 16:10:17 +0300 Subject: [PATCH] make _resolve async to avoid blocking the event loop --- src/netsleuth/probes/latency.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/netsleuth/probes/latency.py b/src/netsleuth/probes/latency.py index 9fed33b..6c9ed7e 100644 --- a/src/netsleuth/probes/latency.py +++ b/src/netsleuth/probes/latency.py @@ -53,9 +53,11 @@ async def tcp_connect_rtt( return (time.perf_counter() - began) * 1000.0 -def _resolve(host: str) -> str | None: +async def _resolve(host: str) -> str | None: try: - return socket.getaddrinfo(host, None, proto=socket.IPPROTO_TCP)[0][4][0] + loop = asyncio.get_running_loop() + res = await loop.getaddrinfo(host, None, proto=socket.IPPROTO_TCP) + return res[0][4][0] except (OSError, IndexError): return None @@ -87,7 +89,7 @@ async def ping_host( backend: str, source_ip: str | None = None, ) -> PingResult: - resolved = _resolve(host) + resolved = await _resolve(host) if backend in ("icmp_win", "icmp_dgram", "icmp_raw"): try: samples = await _icmp_samples(host, count, interval, timeout, backend, source_ip)