diff --git a/internal/protocol/cnpeer.go b/internal/protocol/cnpeer.go index 9013567..8186993 100644 --- a/internal/protocol/cnpeer.go +++ b/internal/protocol/cnpeer.go @@ -98,10 +98,9 @@ func (peer *CNPeer) SetActiveKey(whichKey int) { func (peer *CNPeer) Kill() { log.Printf("Killing peer %p", peer) - if !peer.alive.Load() { + if !peer.alive.CompareAndSwap(true, false) { return } - peer.alive.Store(false) peer.conn.Close() peer.eRecv <- &Event{Type: EVENT_CLIENT_DISCONNECT, Peer: peer}