diff --git a/crates/net/nat/src/lib.rs b/crates/net/nat/src/lib.rs index 9925e84fe2..b49677ef87 100644 --- a/crates/net/nat/src/lib.rs +++ b/crates/net/nat/src/lib.rs @@ -25,7 +25,7 @@ use std::{ task::{Context, Poll}, time::Duration, }; -use tracing::error; +use tracing::{debug, error}; use crate::net_if::resolve_net_if_ip; #[cfg(feature = "serde")] @@ -191,20 +191,30 @@ pub async fn external_addr_with(resolver: NatResolver) -> Option { match resolver { NatResolver::Any | NatResolver::Upnp | NatResolver::PublicIp => resolve_external_ip().await, NatResolver::ExternalIp(ip) => Some(ip), - NatResolver::NetIf => match resolve_net_if_ip(DEFAULT_NET_IF_NAME) { - Ok(ip) => Some(ip), - Err(err) => { - error!("Failed to resolve network interface IP: {}", err); - None - } - }, + NatResolver::NetIf => resolve_net_if_ip(DEFAULT_NET_IF_NAME) + .inspect_err(|err| { + debug!(target: "net::nat", + %err, + "Failed to resolve network interface IP" + ); + }) + .ok(), NatResolver::None => None, } } async fn resolve_external_ip() -> Option { let futures = EXTERNAL_IP_APIS.iter().copied().map(resolve_external_ip_url_res).map(Box::pin); - futures_util::future::select_ok(futures).await.ok().map(|(res, _)| res) + futures_util::future::select_ok(futures) + .await + .inspect_err(|err| { + debug!(target: "net::nat", + ?err, + external_ip_apis=?EXTERNAL_IP_APIS, + "Failed to resolve external IP from any API"); + }) + .ok() + .map(|(ip, _)| ip) } async fn resolve_external_ip_url_res(url: &str) -> Result {