diff options
Diffstat (limited to 'simulation/peer-server.go')
-rw-r--r-- | simulation/peer-server.go | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/simulation/peer-server.go b/simulation/peer-server.go index 43a1c2b..6567639 100644 --- a/simulation/peer-server.go +++ b/simulation/peer-server.go @@ -227,11 +227,16 @@ func (p *PeerServer) Run(configPath string) { switch m.Type { case shutdownAck: - delete(p.peers, id) - log.Printf("%v shutdown, %d remains.\n", id, len(p.peers)) - if len(p.peers) == 0 { - stopServer <- struct{}{} - } + func() { + p.peersMu.Lock() + defer p.peersMu.Unlock() + + delete(p.peers, id) + log.Printf("%v shutdown, %d remains.\n", id, len(p.peers)) + if len(p.peers) == 0 { + stopServer <- struct{}{} + } + }() break case blockTimestamp: msgs := []TimestampMessage{} |