ソースを参照

ipn/ipnlocal, net/dns: use slices.Equal to simplify code (#16641)

Signed-off-by: jishudashu <[email protected]>
jishudashu 7 ヶ月 前
コミット
23a0398136
2 ファイル変更3 行追加26 行削除
  1. 1 13
      ipn/ipnlocal/local.go
  2. 2 13
      net/dns/config.go

+ 1 - 13
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.

+ 2 - 13
net/dns/config.go

@@ -8,6 +8,7 @@ import (
 	"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
 		}
 	}