浏览代码

p2p: fix rare deadlock in Stop (#17260)

Janoš Guljaš 7 年之前
父节点
当前提交
8f4c4fea20
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      p2p/server.go

+ 2 - 1
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()
 }