From b5e5d504de40b92c17ae23cc35dd50f53f48524f Mon Sep 17 00:00:00 2001 From: Janos Guljas Date: Fri, 27 Jul 2018 12:53:10 +0200 Subject: [PATCH] p2p: fix possible Server.Stop deadlock --- p2p/server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/p2p/server.go b/p2p/server.go index cdb5b1926e..8f860d8f10 100644 --- a/p2p/server.go +++ b/p2p/server.go @@ -340,8 +340,8 @@ func (srv *Server) makeSelf(listener net.Listener, ntab discoverTable) *discover // It blocks until all active connections have been closed. func (srv *Server) Stop() { srv.lock.Lock() - defer srv.lock.Unlock() if !srv.running { + srv.lock.Unlock() return } srv.running = false @@ -350,6 +350,7 @@ func (srv *Server) Stop() { srv.listener.Close() } close(srv.quit) + srv.lock.Unlock() srv.loopWG.Wait() }