From d77b743c7bd371a207d0c103a3a8821dd95841ba Mon Sep 17 00:00:00 2001 From: Eugene Burkov Date: Wed, 14 Dec 2022 18:39:31 +0300 Subject: [PATCH] Pull request: 5251-close-ups Merge in DNS/adguard-home from 5251-close-ups to master Updates #5251. Squashed commit of the following: commit 98a4a9a45ae702df3cf26cab0b28bd83a6556085 Author: Eugene Burkov Date: Wed Dec 14 18:31:17 2022 +0300 all: log changes better commit af25803925c15ba2d9b07865c3deb58033006c52 Author: Eugene Burkov Date: Wed Dec 14 18:24:42 2022 +0300 all: log changes commit 65bb12d8b6d6bd2e37ee83bc4aca63aa573da63a Author: Eugene Burkov Date: Wed Dec 14 18:15:41 2022 +0300 all: upd dnsproxy commit 24039cd7f9c64ee5d9806e1146dbd1e76c298a20 Author: Eugene Burkov Date: Wed Dec 14 17:19:15 2022 +0300 dnsforward: imp code, docs commit a40bbd55267c9904c14b89568408f86ccb3ef6c9 Author: Eugene Burkov Date: Wed Dec 14 16:43:10 2022 +0300 dnsforward: log errs instead of return --- CHANGELOG.md | 6 ++++++ go.mod | 8 ++++---- go.sum | 16 ++++++++-------- internal/dnsforward/dnsforward.go | 30 ++++++++---------------------- 4 files changed, 26 insertions(+), 34 deletions(-) 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 0e94bb90..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 @@ -30,8 +30,8 @@ require ( go.etcd.io/bbolt v1.3.6 golang.org/x/crypto v0.1.0 golang.org/x/exp v0.0.0-20221106115401-f9659909a136 - golang.org/x/net v0.1.0 - golang.org/x/sys v0.2.0 + golang.org/x/net v0.4.0 + golang.org/x/sys v0.3.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/yaml.v3 v3.0.1 howett.net/plist v1.0.0 @@ -61,6 +61,6 @@ require ( github.com/u-root/uio v0.0.0-20220204230159-dac05f7d2cb4 // indirect golang.org/x/mod v0.6.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/text v0.4.0 // indirect + golang.org/x/text v0.5.0 // indirect golang.org/x/tools v0.2.0 // indirect ) diff --git a/go.sum b/go.sum index 091a84e7..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= @@ -187,8 +187,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210929193557-e81a3d93ecf6/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220923203811-8be639271d50/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -228,8 +228,8 @@ golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -237,8 +237,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 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 }