mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-03-01 00:53:47 +00:00
p2p: fix unsynchronized map access during Server shutdown
removePeer can be called even after listenLoop and dialLoop have returned.
This commit is contained in:
parent
995fab2ebc
commit
b9929d289d
1 changed files with 2 additions and 0 deletions
|
|
@ -260,9 +260,11 @@ func (srv *Server) Stop() {
|
|||
// No new peers can be added at this point because dialLoop and
|
||||
// listenLoop are down. It is safe to call peerWG.Wait because
|
||||
// peerWG.Add is not called outside of those loops.
|
||||
srv.lock.Lock()
|
||||
for _, peer := range srv.peers {
|
||||
peer.Disconnect(DiscQuitting)
|
||||
}
|
||||
srv.lock.Unlock()
|
||||
srv.peerWG.Wait()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue