]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix data race closing incoming PeerConn
authorMatt Joiner <anacrolix@gmail.com>
Thu, 19 Aug 2021 03:35:52 +0000 (13:35 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 19 Aug 2021 03:37:00 +0000 (13:37 +1000)
client.go

index 4815a0cd4561edb27f18d1d147d4a07e0d3b58da..fe1a876970d9c334aa3bd2374f7745b6202e48a5 100644 (file)
--- a/client.go
+++ b/client.go
@@ -537,7 +537,11 @@ func (cl *Client) incomingConnection(nc net.Conn) {
        }
        c := cl.newConnection(nc, false, nc.RemoteAddr(), nc.RemoteAddr().Network(),
                regularNetConnPeerConnConnString(nc))
-       defer c.close()
+       defer func() {
+               cl.lock()
+               defer cl.unlock()
+               c.close()
+       }()
        c.Discovery = PeerSourceIncoming
        cl.runReceivedConn(c)
 }