p2p: fix unsynchronized map access during Server shutdown

removePeer can be called even after listenLoop and dialLoop have returned.
pull/704/head
Felix Lange 10 years ago
parent 995fab2ebc
commit b9929d289d
  1. 2
      p2p/server.go

@ -260,9 +260,11 @@ func (srv *Server) Stop() {
// No new peers can be added at this point because dialLoop and // No new peers can be added at this point because dialLoop and
// listenLoop are down. It is safe to call peerWG.Wait because // listenLoop are down. It is safe to call peerWG.Wait because
// peerWG.Add is not called outside of those loops. // peerWG.Add is not called outside of those loops.
srv.lock.Lock()
for _, peer := range srv.peers { for _, peer := range srv.peers {
peer.Disconnect(DiscQuitting) peer.Disconnect(DiscQuitting)
} }
srv.lock.Unlock()
srv.peerWG.Wait() srv.peerWG.Wait()
} }

Loading…
Cancel
Save