From 38048672a77f9387ab28e2912219821203e3c939 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 6 Jul 2016 00:38:43 +1000 Subject: [PATCH] Rework locking in Client.acceptConnections --- client.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client.go b/client.go index 9a223204..f8c42beb 100644 --- a/client.go +++ b/client.go @@ -378,8 +378,6 @@ func (cl *Client) ipBlockRange(ip net.IP) (r iplist.Range, blocked bool) { } func (cl *Client) waitAccept() { - cl.mu.Lock() - defer cl.mu.Unlock() for { for _, t := range cl.torrents { if t.wantConns() { @@ -394,10 +392,14 @@ func (cl *Client) waitAccept() { } func (cl *Client) acceptConnections(l net.Listener, utp bool) { + cl.mu.Lock() + defer cl.mu.Unlock() for { cl.waitAccept() + cl.mu.Unlock() conn, err := l.Accept() conn = pproffd.WrapNetConn(conn) + cl.mu.Lock() if cl.closed.IsSet() { if conn != nil { conn.Close() @@ -415,11 +417,9 @@ func (cl *Client) acceptConnections(l net.Listener, utp bool) { } else { acceptTCP.Add(1) } - cl.mu.RLock() reject := cl.badPeerIPPort( missinggo.AddrIP(conn.RemoteAddr()), missinggo.AddrPort(conn.RemoteAddr())) - cl.mu.RUnlock() if reject { acceptReject.Add(1) conn.Close() -- 2.48.1