@@ -162,51 +162,51 @@ func (t *Tunnel) RefreshPeersList() {
162162 newLocalIPv6 := net .ParseIP (knownPeer .IPAddrV6 )
163163
164164 prevPeer , exists := t .peerIDToPeer [peerID ]
165- if exists {
166- oldLocalIP := * prevPeer .localIP .Load ()
167- var oldLocalIPv6 net.IP
168- if p := prevPeer .localIPv6 .Load (); p != nil {
169- oldLocalIPv6 = * p
165+ if ! exists {
166+ // add new peer
167+ vpnPeer := NewVpnPeer (peerID , newLocalIP , newLocalIPv6 )
168+ t .peerIDToPeer [peerID ] = vpnPeer
169+ t .netIPToPeer [newLocalIP .String ()] = vpnPeer
170+ if newLocalIPv6 != nil {
171+ t .netIPToPeer [newLocalIPv6 .String ()] = vpnPeer
172+ t .logger .Debugf ("mapping peer %s (%s) to IPv6 %s" , peerID , newLocalIP , newLocalIPv6 )
170173 }
174+ vpnPeer .Start (t )
175+ continue
176+ }
171177
172- ipChanged := ! oldLocalIP .Equal (newLocalIP )
173- ipv6Changed := ! oldLocalIPv6 .Equal (newLocalIPv6 )
174-
175- if ! ipChanged && ! ipv6Changed {
176- // no changes
177- continue
178- }
178+ oldLocalIP := * prevPeer .localIP .Load ()
179+ var oldLocalIPv6 net.IP
180+ if p := prevPeer .localIPv6 .Load (); p != nil {
181+ oldLocalIPv6 = * p
182+ }
179183
180- // IP changed: update both IPv4 and IPv6 mappings
181- if ipChanged {
182- delete (t .netIPToPeer , oldLocalIP .String ())
183- prevPeer .localIP .Store (& newLocalIP )
184- t .netIPToPeer [newLocalIP .String ()] = prevPeer
185- }
184+ ipChanged := ! oldLocalIP .Equal (newLocalIP )
185+ ipv6Changed := ! oldLocalIPv6 .Equal (newLocalIPv6 )
186186
187- if ipv6Changed {
188- if oldLocalIPv6 != nil {
189- delete (t .netIPToPeer , oldLocalIPv6 .String ())
190- }
191- if newLocalIPv6 != nil {
192- prevPeer .localIPv6 .Store (& newLocalIPv6 )
193- t .netIPToPeer [newLocalIPv6 .String ()] = prevPeer
194- } else {
195- prevPeer .localIPv6 .Store (nil )
196- }
197- }
187+ if ! ipChanged && ! ipv6Changed {
188+ // no changes
198189 continue
199190 }
200191
201- // add new peer
202- vpnPeer := NewVpnPeer (peerID , newLocalIP , newLocalIPv6 )
203- t .peerIDToPeer [peerID ] = vpnPeer
204- t .netIPToPeer [newLocalIP .String ()] = vpnPeer
205- if newLocalIPv6 != nil {
206- t .netIPToPeer [newLocalIPv6 .String ()] = vpnPeer
207- t .logger .Debugf ("mapping peer %s (%s) to IPv6 %s" , peerID , newLocalIP , newLocalIPv6 )
192+ // IP changed: update both IPv4 and IPv6 mappings
193+ if ipChanged {
194+ delete (t .netIPToPeer , oldLocalIP .String ())
195+ prevPeer .localIP .Store (& newLocalIP )
196+ t .netIPToPeer [newLocalIP .String ()] = prevPeer
197+ }
198+
199+ if ipv6Changed {
200+ if oldLocalIPv6 != nil {
201+ delete (t .netIPToPeer , oldLocalIPv6 .String ())
202+ }
203+ if newLocalIPv6 != nil {
204+ prevPeer .localIPv6 .Store (& newLocalIPv6 )
205+ t .netIPToPeer [newLocalIPv6 .String ()] = prevPeer
206+ } else {
207+ prevPeer .localIPv6 .Store (nil )
208+ }
208209 }
209- vpnPeer .Start (t )
210210 }
211211
212212 // delete unknown peers
0 commit comments