Explorar o código

Merge pull request #278 from SerialVelocity/fix-peer-node-equality-checking

Fix peer and node equality checking
Lucas Servén Marín %!s(int64=4) %!d(string=hai) anos
pai
achega
a1af9790ea
Modificáronse 1 ficheiros con 16 adicións e 3 borrados
  1. 16 3
      pkg/mesh/mesh.go

+ 16 - 3
pkg/mesh/mesh.go

@@ -704,7 +704,7 @@ func peersAreEqual(a, b *Peer) bool {
 		(a.PresharedKey == nil) == (b.PresharedKey == nil) &&
 		(a.PresharedKey == nil || a.PresharedKey.String() == b.PresharedKey.String()) &&
 		(a.PersistentKeepaliveInterval == nil) == (b.PersistentKeepaliveInterval == nil) &&
-		(a.PersistentKeepaliveInterval == nil || a.PersistentKeepaliveInterval == b.PersistentKeepaliveInterval)
+		(a.PersistentKeepaliveInterval == nil || *a.PersistentKeepaliveInterval == *b.PersistentKeepaliveInterval)
 }
 
 func ipNetsEqual(a, b *net.IPNet) bool {
@@ -751,18 +751,31 @@ func subnetsEqual(a, b *net.IPNet) bool {
 	return true
 }
 
-func discoveredEndpointsAreEqual(a, b map[string]*net.UDPAddr) bool {
+func udpAddrsEqual(a, b *net.UDPAddr) bool {
 	if a == nil && b == nil {
 		return true
 	}
 	if (a != nil) != (b != nil) {
 		return false
 	}
+	if a.Zone != b.Zone {
+		return false
+	}
+	if a.Port != b.Port {
+		return false
+	}
+	return a.IP.Equal(b.IP)
+}
+
+func discoveredEndpointsAreEqual(a, b map[string]*net.UDPAddr) bool {
+	if a == nil && b == nil {
+		return true
+	}
 	if len(a) != len(b) {
 		return false
 	}
 	for k := range a {
-		if a[k] != b[k] {
+		if !udpAddrsEqual(a[k], b[k]) {
 			return false
 		}
 	}