diff --git a/cmd/cli/dns_proxy.go b/cmd/cli/dns_proxy.go index b24fb89..12a4be4 100644 --- a/cmd/cli/dns_proxy.go +++ b/cmd/cli/dns_proxy.go @@ -81,13 +81,7 @@ type upstreamForResult struct { srcAddr string } -// serveDNS sets up and starts a DNS server on the specified listener, handling DNS queries and network monitoring. func (p *prog) serveDNS(mainCtx context.Context, listenerNum string) error { - if err := p.monitorNetworkChanges(mainCtx); err != nil { - p.Error().Err(err).Msg("Failed to start network monitoring") - // Don't return here as we still want DNS service to run - } - listenerConfig := p.cfg.Listener[listenerNum] if allocErr := p.allocateIP(listenerConfig.IP); allocErr != nil { p.Error().Err(allocErr).Str("ip", listenerConfig.IP).Msg("serveUDP: failed to allocate listen ip") diff --git a/cmd/cli/prog.go b/cmd/cli/prog.go index c847ebf..55e7751 100644 --- a/cmd/cli/prog.go +++ b/cmd/cli/prog.go @@ -514,6 +514,12 @@ func (p *prog) run(reload bool, reloadCh chan struct{}) { for listenerNum := range p.cfg.Listener { p.cfg.Listener[listenerNum].Init() if !reload { + go func() { + // Start network monitoring + if err := p.monitorNetworkChanges(ctx); err != nil { + mainLog.Load().Error().Err(err).Msg("Failed to start network monitoring") + } + }() go func(listenerNum string) { listenerConfig := p.cfg.Listener[listenerNum] upstreamConfig := p.cfg.Upstream[listenerNum]