p2p: fix unsynchronized map access during Server shutdown

removePeer can be called even after listenLoop and dialLoop have returned.
This commit is contained in:
Felix Lange 2015-04-13 17:37:32 +02:00
parent 995fab2ebc
commit b9929d289d
1 changed files with 2 additions and 0 deletions

View File

@ -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()
}