diff --git a/internal/dns/run.go b/internal/dns/run.go index 2c67f9f4..430ab0ef 100644 --- a/internal/dns/run.go +++ b/internal/dns/run.go @@ -45,7 +45,6 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) { if err == nil { l.backoffTime = defaultBackoffTime l.logger.Info("ready") - l.signalOrSetStatus(constants.Running) break } @@ -62,6 +61,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) { l.logAndWait(ctx, err) settings = l.GetSettings() } + l.signalOrSetStatus(constants.Running) settings = l.GetSettings() if !*settings.KeepNameserver && !*settings.ServerEnabled { @@ -82,15 +82,19 @@ func (l *Loop) runWait(ctx context.Context, runError <-chan error) (exitLoop boo for { select { case <-ctx.Done(): - l.stopServer() - // TODO revert OS and Go nameserver when exiting + if !*l.GetSettings().KeepNameserver { + l.stopServer() + // TODO revert OS and Go nameserver when exiting + } return true case <-l.stop: l.userTrigger = true l.logger.Info("stopping") - const fallback = false - l.useUnencryptedDNS(fallback) - l.stopServer() + if !*l.GetSettings().KeepNameserver { + const fallback = false + l.useUnencryptedDNS(fallback) + l.stopServer() + } l.stopped <- struct{}{} case <-l.start: l.userTrigger = true