Refactor connectivity logging for upstream results
This commit is contained in:
132
src/main.rs
132
src/main.rs
@@ -337,77 +337,77 @@ match crate::transport::middle_proxy::fetch_proxy_secret(proxy_secret_path).awai
|
|||||||
|
|
||||||
let ping_results = upstream_manager.ping_all_dcs(prefer_ipv6).await;
|
let ping_results = upstream_manager.ping_all_dcs(prefer_ipv6).await;
|
||||||
|
|
||||||
for upstream_result in &ping_results {
|
for upstream_result in &ping_results {
|
||||||
// Show which IP version is in use and which is fallback
|
let v6_works = upstream_result
|
||||||
if upstream_result.both_available {
|
.v6_results
|
||||||
if prefer_ipv6 {
|
.iter()
|
||||||
info!(" IPv6 in use and IPv4 is fallback");
|
.any(|r| r.rtt_ms.is_some());
|
||||||
} else {
|
let v4_works = upstream_result
|
||||||
info!(" IPv4 in use and IPv6 is fallback");
|
.v4_results
|
||||||
}
|
.iter()
|
||||||
} else {
|
.any(|r| r.rtt_ms.is_some());
|
||||||
let v6_works = upstream_result
|
|
||||||
.v6_results
|
if upstream_result.both_available {
|
||||||
.iter()
|
if prefer_ipv6 {
|
||||||
.any(|r| r.rtt_ms.is_some());
|
info!(" IPv6 in use and IPv4 is fallback");
|
||||||
let v4_works = upstream_result
|
} else {
|
||||||
.v4_results
|
info!(" IPv4 in use and IPv6 is fallback");
|
||||||
.iter()
|
}
|
||||||
.any(|r| r.rtt_ms.is_some());
|
} else {
|
||||||
if v6_works && !v4_works {
|
if v6_works && !v4_works {
|
||||||
info!(" IPv6 only (IPv4 unavailable)");
|
info!(" IPv6 only (IPv4 unavailable)");
|
||||||
} else if v4_works && !v6_works {
|
} else if v4_works && !v6_works {
|
||||||
info!(" IPv4 only (IPv6 unavailable)");
|
info!(" IPv4 only (IPv6 unavailable)");
|
||||||
} else if !v6_works && !v4_works {
|
} else if !v6_works && !v4_works {
|
||||||
info!(" No connectivity!");
|
info!(" No connectivity!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
info!(" via {}", upstream_result.upstream_name);
|
info!(" via {}", upstream_result.upstream_name);
|
||||||
info!("============================================================");
|
info!("============================================================");
|
||||||
|
|
||||||
// Print IPv6 results first
|
// Print IPv6 results first (only if IPv6 is available)
|
||||||
for dc in &upstream_result.v6_results {
|
if v6_works {
|
||||||
let addr_str = format!("{}:{}", dc.dc_addr.ip(), dc.dc_addr.port());
|
for dc in &upstream_result.v6_results {
|
||||||
match &dc.rtt_ms {
|
let addr_str = format!("{}:{}", dc.dc_addr.ip(), dc.dc_addr.port());
|
||||||
Some(rtt) => {
|
match &dc.rtt_ms {
|
||||||
// Align: IPv6 addresses are longer, use fewer tabs
|
Some(rtt) => {
|
||||||
// [2001:b28:f23d:f001::a]:443 = ~28 chars
|
info!(" DC{} [IPv6] {}:\t\t{:.0} ms", dc.dc_idx, addr_str, rtt);
|
||||||
info!(" DC{} [IPv6] {}:\t\t{:.0} ms", dc.dc_idx, addr_str, rtt);
|
}
|
||||||
}
|
None => {
|
||||||
None => {
|
let err = dc.error.as_deref().unwrap_or("fail");
|
||||||
let err = dc.error.as_deref().unwrap_or("fail");
|
info!(" DC{} [IPv6] {}:\t\tFAIL ({})", dc.dc_idx, addr_str, err);
|
||||||
info!(" DC{} [IPv6] {}:\t\tFAIL ({})", dc.dc_idx, addr_str, err);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
info!("============================================================");
|
info!("============================================================");
|
||||||
|
}
|
||||||
|
|
||||||
// Print IPv4 results
|
// Print IPv4 results (only if IPv4 is available)
|
||||||
for dc in &upstream_result.v4_results {
|
if v4_works {
|
||||||
let addr_str = format!("{}:{}", dc.dc_addr.ip(), dc.dc_addr.port());
|
for dc in &upstream_result.v4_results {
|
||||||
match &dc.rtt_ms {
|
let addr_str = format!("{}:{}", dc.dc_addr.ip(), dc.dc_addr.port());
|
||||||
Some(rtt) => {
|
match &dc.rtt_ms {
|
||||||
// Align: IPv4 addresses are shorter, use more tabs
|
Some(rtt) => {
|
||||||
// 149.154.175.50:443 = ~18 chars
|
info!(
|
||||||
info!(
|
" DC{} [IPv4] {}:\t\t\t\t{:.0} ms",
|
||||||
" DC{} [IPv4] {}:\t\t\t\t{:.0} ms",
|
dc.dc_idx, addr_str, rtt
|
||||||
dc.dc_idx, addr_str, rtt
|
);
|
||||||
);
|
}
|
||||||
}
|
None => {
|
||||||
None => {
|
let err = dc.error.as_deref().unwrap_or("fail");
|
||||||
let err = dc.error.as_deref().unwrap_or("fail");
|
info!(
|
||||||
info!(
|
" DC{} [IPv4] {}:\t\t\t\tFAIL ({})",
|
||||||
" DC{} [IPv4] {}:\t\t\t\tFAIL ({})",
|
dc.dc_idx, addr_str, err
|
||||||
dc.dc_idx, addr_str, err
|
);
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
info!("============================================================");
|
info!("============================================================");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Background tasks
|
// Background tasks
|
||||||
|
|||||||
Reference in New Issue
Block a user