diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index bf13b2ac1..5fb3d5771 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -2166,7 +2166,7 @@ func (b *LocalBackend) setWgengineStatus(s *wgengine.Status, err error) { es := b.parseWgStatusLocked(s) cc := b.cc b.engineStatus = es - needUpdateEndpoints := !endpointsEqual(s.LocalAddrs, b.endpoints) + needUpdateEndpoints := !slices.Equal(s.LocalAddrs, b.endpoints) if needUpdateEndpoints { b.endpoints = append([]tailcfg.Endpoint{}, s.LocalAddrs...) } @@ -2192,18 +2192,6 @@ func (b *LocalBackend) broadcastStatusChanged() { b.statusLock.Unlock() } -func endpointsEqual(x, y []tailcfg.Endpoint) bool { - if len(x) != len(y) { - return false - } - for i := range x { - if x[i] != y[i] { - return false - } - } - return true -} - // SetNotifyCallback sets the function to call when the backend has something to // notify the frontend about. Only one callback can be set at a time, so calling // this function will replace the previous callback. diff --git a/net/dns/config.go b/net/dns/config.go index b2f4e6dbd..b2c7c4285 100644 --- a/net/dns/config.go +++ b/net/dns/config.go @@ -8,6 +8,7 @@ "bufio" "fmt" "net/netip" + "slices" "sort" "tailscale.com/control/controlknobs" @@ -181,19 +182,7 @@ func sameResolverNames(a, b []*dnstype.Resolver) bool { if a[i].Addr != b[i].Addr { return false } - if !sameIPs(a[i].BootstrapResolution, b[i].BootstrapResolution) { - return false - } - } - return true -} - -func sameIPs(a, b []netip.Addr) bool { - if len(a) != len(b) { - return false - } - for i := range a { - if a[i] != b[i] { + if !slices.Equal(a[i].BootstrapResolution, b[i].BootstrapResolution) { return false } }