From 0c74838740e089c92ba6f4c6991cbf667e8f4f5e Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Feb 2025 02:08:44 -0500 Subject: [PATCH] init os resolver after upstream recovers --- cmd/cli/dns_proxy.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/cmd/cli/dns_proxy.go b/cmd/cli/dns_proxy.go index c5e5fd2..1b08c9d 100644 --- a/cmd/cli/dns_proxy.go +++ b/cmd/cli/dns_proxy.go @@ -1265,15 +1265,6 @@ func (p *prog) reinitializeOSResolver(networkChange bool) { p.resetDNS() mainLog.Load().Debug().Msg("DNS reset completed") - // Initialize OS resolver regardless of upstream recovery. - mainLog.Load().Debug().Msg("initializing OS resolver") - ns := ctrld.InitializeOsResolver(true) - if len(ns) == 0 { - mainLog.Load().Warn().Msgf("no nameservers found, using existing OS resolver values") - } else { - mainLog.Load().Warn().Msgf("re-initialized OS resolver with nameservers: %v", ns) - } - if networkChange { // If we're already waiting on a recovery from a previous network change, // cancel that wait to avoid stale recovery. @@ -1295,7 +1286,18 @@ func (p *prog) reinitializeOSResolver(networkChange bool) { mainLog.Load().Warn().Err(err).Msg("No non-OS upstream recovered within the timeout; not re-enabling the listener") return } - mainLog.Load().Info().Msgf("Non-OS upstream %q recovered; reattaching DNS", recoveredUpstream) + + mainLog.Load().Info().Msgf("Non-OS upstream %q recovered; initializing OS resolver and attaching DNS listener", recoveredUpstream) + + // Initialize OS resolver regardless of upstream recovery. + mainLog.Load().Debug().Msg("initializing OS resolver") + ns := ctrld.InitializeOsResolver(true) + if len(ns) == 0 { + mainLog.Load().Warn().Msgf("no nameservers found, using existing OS resolver values") + } else { + mainLog.Load().Warn().Msgf("re-initialized OS resolver with nameservers: %v", ns) + } + p.setDNS() p.logInterfacesState()