summaryrefslogtreecommitdiff
path: root/device/device.go
diff options
context:
space:
mode:
Diffstat (limited to 'device/device.go')
-rw-r--r--device/device.go14
1 files changed, 5 insertions, 9 deletions
diff --git a/device/device.go b/device/device.go
index 1641c3b..de479bc 100644
--- a/device/device.go
+++ b/device/device.go
@@ -125,12 +125,8 @@ func (device *Device) isUp() bool {
return device.deviceState() == deviceStateUp
}
-/* Converts the peer into a "zombie", which remains in the peer map,
- * but processes no packets and does not exists in the routing table.
- *
- * Must hold device.peers.Mutex
- */
-func unsafeRemovePeer(device *Device, peer *Peer, key NoisePublicKey) {
+// Must hold device.peers.Lock()
+func removePeerLocked(device *Device, peer *Peer, key NoisePublicKey) {
// stop routing and processing of packets
device.allowedips.RemoveByPeer(peer)
peer.Stop()
@@ -245,7 +241,7 @@ func (device *Device) SetPrivateKey(sk NoisePrivateKey) error {
for key, peer := range device.peers.keyMap {
if peer.handshake.remoteStatic.Equals(publicKey) {
peer.handshake.mutex.RUnlock()
- unsafeRemovePeer(device, peer, key)
+ removePeerLocked(device, peer, key)
peer.handshake.mutex.RLock()
}
}
@@ -334,7 +330,7 @@ func (device *Device) RemovePeer(key NoisePublicKey) {
peer, ok := device.peers.keyMap[key]
if ok {
- unsafeRemovePeer(device, peer, key)
+ removePeerLocked(device, peer, key)
}
}
@@ -343,7 +339,7 @@ func (device *Device) RemoveAllPeers() {
defer device.peers.Unlock()
for key, peer := range device.peers.keyMap {
- unsafeRemovePeer(device, peer, key)
+ removePeerLocked(device, peer, key)
}
device.peers.keyMap = make(map[NoisePublicKey]*Peer)