diff --git a/CHANGELOG.md b/CHANGELOG.md index 131e4558..558a3658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,7 +34,13 @@ See also the [v0.107.21 GitHub milestone][ms-v0.107.21]. to update the URLs to the new ones. Custom filters added by users themselves do not require re-adding. +### Fixed + +- Errors popping up during updates of settings, which could sometimes cause the + server to stop responding ([#5251]). + [#5238]: https://github.com/AdguardTeam/AdGuardHome/issues/5238 +[#5251]: https://github.com/AdguardTeam/AdGuardHome/issues/5251 diff --git a/go.mod b/go.mod index dc316b90..efdda558 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/AdguardTeam/AdGuardHome go 1.18 require ( - github.com/AdguardTeam/dnsproxy v0.46.4 + github.com/AdguardTeam/dnsproxy v0.46.5 github.com/AdguardTeam/golibs v0.11.3 github.com/AdguardTeam/urlfilter v0.16.0 github.com/NYTimes/gziphandler v1.1.1 diff --git a/go.sum b/go.sum index 60726235..46d70dc0 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/AdguardTeam/dnsproxy v0.46.4 h1:/+wnTG0q2TkGQyA1PeSsjv4/f5ZprGduKPSoOcG+rOU= -github.com/AdguardTeam/dnsproxy v0.46.4/go.mod h1:yYDMAH6ay2PxLcLtfVM3FUiyv/U9B/zYO+cIIssuJNU= +github.com/AdguardTeam/dnsproxy v0.46.5 h1:TiJZhwaIDDaKkqEfJ9AD9aroFjcHN8oEbKB8WfTjSIs= +github.com/AdguardTeam/dnsproxy v0.46.5/go.mod h1:yKBVgFlE6CqTQtye++3e7SATaMPc4Ixij+KkHsM6HhM= github.com/AdguardTeam/golibs v0.4.0/go.mod h1:skKsDKIBB7kkFflLJBpfGX+G8QFTx0WKUzB6TIgtUj4= github.com/AdguardTeam/golibs v0.10.4/go.mod h1:rSfQRGHIdgfxriDDNgNJ7HmE5zRoURq8R+VdR81Zuzw= github.com/AdguardTeam/golibs v0.11.3 h1:Oif+REq2WLycQ2Xm3ZPmJdfftptss0HbGWbxdFaC310= diff --git a/internal/dnsforward/dnsforward.go b/internal/dnsforward/dnsforward.go index 53091e23..5d1cce4a 100644 --- a/internal/dnsforward/dnsforward.go +++ b/internal/dnsforward/dnsforward.go @@ -570,46 +570,32 @@ func (s *Server) Stop() error { // stopLocked stops the DNS server without locking. For internal use only. func (s *Server) stopLocked() (err error) { + // TODO(e.burkov, a.garipov): Return critical errors, not just log them. + // This will require filtering all the non-critical errors in + // [upstream.Upstream] implementations. + if s.dnsProxy != nil { err = s.dnsProxy.Stop() if err != nil { - return fmt.Errorf("closing primary resolvers: %w", err) + log.Error("dnsforward: closing primary resolvers: %s", err) } } - var errs []error - if upsConf := s.internalProxy.UpstreamConfig; upsConf != nil { - const action = "closing internal resolvers" - err = upsConf.Close() if err != nil { - if errors.Is(err, net.ErrClosed) { - log.Debug("dnsforward: %s: %s", action, err) - } else { - errs = append(errs, fmt.Errorf("%s: %w", action, err)) - } + log.Error("dnsforward: closing internal resolvers: %s", err) } } if upsConf := s.localResolvers.UpstreamConfig; upsConf != nil { - const action = "closing local resolvers" - err = upsConf.Close() if err != nil { - if errors.Is(err, net.ErrClosed) { - log.Debug("dnsforward: %s: %s", action, err) - } else { - errs = append(errs, fmt.Errorf("%s: %w", action, err)) - } + log.Error("dnsforward: closing local resolvers: %s", err) } } - if len(errs) > 0 { - return errors.List("stopping dns server", errs...) - } else { - s.isRunning = false - } + s.isRunning = false return nil }