From 8f4c4fea20da04557d94eab0acbbc681861cce15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jano=C5=A1=20Gulja=C5=A1?= Date: Mon, 30 Jul 2018 11:44:17 +0200 Subject: [PATCH] p2p: fix rare deadlock in Stop (#17260) --- p2p/server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/p2p/server.go b/p2p/server.go index cdb5b1926..8f860d8f1 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() }