diff --git a/src/main.rs b/src/main.rs index 02074e1..cea7a0c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -174,7 +174,14 @@ fn resolve_reflectors( } else { 0 }; - for endpoint in (definition.host.as_str(), port).to_socket_addrs()? { + let endpoints = match (definition.host.as_str(), port).to_socket_addrs() { + Ok(endpoints) => endpoints, + Err(error) => { + warn!("Failed to resolve reflector {}: {error}", definition.host); + continue; + } + }; + for endpoint in endpoints { if protocol != ReflectorProtocol::Irtt && endpoint.is_ipv6() { continue; } @@ -199,6 +206,9 @@ fn setup_reflectors(settings: &Settings) -> anyhow::Result { .iter() .map(|(endpoint, definition)| (*endpoint, definition.clone())), ); + if reflectors.is_empty() { + anyhow::bail!("no usable reflectors for measurement protocol {protocol}"); + } let mut pool = configured.keys().copied().collect::>(); pool.sort(); let mut initial = bootstrap.keys().copied().collect::>();