Pārlūkot izejas kodu

p2p: fix rare deadlock in Stop (#17260)

Janoš Guljaš 7 gadi atpakaļ
vecāks
revīzija
8f4c4fea20
1 mainītis faili ar 2 papildinājumiem un 1 dzēšanām
  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()
 }