Fix peer and node equality checking

This commit is contained in:
Ben Grabham 2022-03-01 18:09:25 +00:00
parent 02d49ded39
commit 6d6c62ae49

View File

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