When unreachable occurs resolve the address again

This commit is contained in:
Jeremy Wall 2021-01-05 20:58:11 -05:00
parent 762fdb8bd5
commit d283551bb7

View File

@ -41,13 +41,17 @@ gflags::define! {
--maxHops: u8 = 50 --maxHops: u8 = 50
} }
fn resolve_host_address(host: &str) -> String {
format!("{}", util::resolve_hosts(&vec![host]).unwrap().first().unwrap().unwrap())
}
pub fn start_echo_loop( pub fn start_echo_loop(
domain_name: &str, domain_name: &str,
stop_signal: Arc<RwLock<bool>>, stop_signal: Arc<RwLock<bool>>,
ping_latency_guage: IntGaugeVec, ping_latency_guage: IntGaugeVec,
ping_counter: CounterVec, ping_counter: CounterVec,
) { ) {
let resolved = format!("{}", util::resolve_hosts(&vec![domain_name]).unwrap().first().unwrap().unwrap()); let resolved = resolve_host_address(domain_name);
info!("Attempting to ping domain {} at address: {}", domain_name, resolved); info!("Attempting to ping domain {} at address: {}", domain_name, resolved);
let mut sender = Ekko::with_target(&resolved).unwrap(); let mut sender = Ekko::with_target(&resolved).unwrap();
loop { loop {
@ -81,6 +85,7 @@ pub fn start_echo_loop(
ping_counter ping_counter
.with(&prometheus::labels! {"result" => "unreachable", "domain" => domain_name, "ip" => &resolved}) .with(&prometheus::labels! {"result" => "unreachable", "domain" => domain_name, "ip" => &resolved})
.inc(); .inc();
let resolved = resolve_host_address(domain_name);
let mut new_sender = Ekko::with_target(&resolved).unwrap(); let mut new_sender = Ekko::with_target(&resolved).unwrap();
std::mem::swap(&mut sender, &mut new_sender); std::mem::swap(&mut sender, &mut new_sender);