From eaccb5e8e6a469a5a0d4e453db0b7aa575ba0a48 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Tue, 7 Apr 2026 10:09:27 +0200 Subject: [PATCH] fix(netwatch): avoid deadlock for get_default_route on windows Closes #124 --- netwatch/src/interfaces/windows.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/netwatch/src/interfaces/windows.rs b/netwatch/src/interfaces/windows.rs index b8a1d069..4fc2ce1d 100644 --- a/netwatch/src/interfaces/windows.rs +++ b/netwatch/src/interfaces/windows.rs @@ -42,11 +42,16 @@ fn get_default_route() -> Result { } pub async fn default_route() -> Option { - match get_default_route() { - Ok(route) => Some(route), - Err(err) => { + // WMI uses COM which can deadlock on a tokio worker thread. + match tokio::task::spawn_blocking(get_default_route).await { + Ok(Ok(route)) => Some(route), + Ok(Err(err)) => { warn!("failed to retrieve default route: {:#?}", err); None } + Err(err) => { + warn!("default route task panicked: {:#?}", err); + None + } } }