fix: use Quad9 IP (9.9.9.9) for DoH fallback, not hostname

DoH to dns.quad9.net requires DNS to resolve the hostname, which
creates a chicken-and-egg loop when numa IS the system resolver
(e.g. after numa install on Windows). Using the IP directly avoids
the bootstrap dependency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Razvan Dimescu
2026-04-01 14:14:38 +03:00
parent 232e6fa412
commit a464d60f12

View File

@@ -126,7 +126,7 @@ async fn main() -> numa::Result<()> {
.use_rustls_tls() .use_rustls_tls()
.build() .build()
.unwrap_or_default(); .unwrap_or_default();
let url = "https://dns.quad9.net/dns-query".to_string(); let url = "https://9.9.9.9/dns-query".to_string();
let label = url.clone(); let label = url.clone();
( (
numa::config::UpstreamMode::Forward, numa::config::UpstreamMode::Forward,
@@ -152,7 +152,7 @@ async fn main() -> numa::Result<()> {
.or_else(numa::system_dns::detect_dhcp_dns) .or_else(numa::system_dns::detect_dhcp_dns)
.unwrap_or_else(|| { .unwrap_or_else(|| {
info!("could not detect system DNS, falling back to Quad9 DoH"); info!("could not detect system DNS, falling back to Quad9 DoH");
"https://dns.quad9.net/dns-query".to_string() "https://9.9.9.9/dns-query".to_string()
}) })
} else { } else {
config.upstream.address.clone() config.upstream.address.clone()