Pull request: 5089-windows-hosts-crash

Updates #5089.

Squashed commit of the following:

commit dd3ce763326ad3207de111bb911e0a2665bcebba
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Mon Nov 7 16:21:43 2022 +0300

    aghnet: fix comparison

commit 0d736fb7fc5cb2e77fd533cd95fdf3fbc6dc86d1
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Mon Nov 7 14:13:05 2022 +0300

    aghnet: fix crash
This commit is contained in:
Ainar Garipov 2022-11-07 16:51:07 +03:00
parent a7d02fa935
commit 464fbf0b54
2 changed files with 16 additions and 2 deletions

View File

@ -17,6 +17,14 @@ and this project adheres to
### Fixed
- Crash on Windows when system hosts files are read ([#5089]).
[#5089]: https://github.com/AdguardTeam/AdGuardHome/issues/5089
<!--
## [v0.107.18] - 2022-11-16 (APPROX.)
@ -1088,7 +1096,7 @@ See also the [v0.106.0 GitHub milestone][ms-v0.106.0].
- Hostname uniqueness validation in the DHCP server ([#2952]).
- Hostname generating for DHCP clients which don't provide their own ([#2723]).
- New flag `--no-etc-hosts` to disable client domain name lookups in the
operating system's /etc/hosts files ([#1947]).
operating system's `/etc/hosts` files ([#1947]).
- The ability to set up custom upstreams to resolve PTR queries for local
addresses and to disable the automatic resolving of clients' addresses
([#2704]).

View File

@ -139,6 +139,8 @@ type HostsRecord struct {
func (rec *HostsRecord) equal(other *HostsRecord) (ok bool) {
if rec == nil {
return other == nil
} else if other == nil {
return false
}
return rec.Canonical == other.Canonical && rec.Aliases.Equal(other.Aliases)
@ -478,7 +480,11 @@ func (hc *HostsContainer) refresh() (err error) {
return fmt.Errorf("refreshing : %w", err)
}
if maps.EqualFunc(hp.table, hc.last, (*HostsRecord).equal) {
// hc.last is nil on the first refresh, so let that one through.
//
// TODO(a.garipov): Once https://github.com/golang/go/issues/56621 is
// resolved, remove the first condition.
if hc.last != nil && maps.EqualFunc(hp.table, hc.last, (*HostsRecord).equal) {
log.Debug("%s: no changes detected", hostsContainerPref)
return nil