]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Don't include the handshake in the dial timeout for outgoing connections
authorMatt Joiner <anacrolix@gmail.com>
Sun, 11 Aug 2019 03:17:47 +0000 (13:17 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Sun, 11 Aug 2019 03:17:47 +0000 (13:17 +1000)
client.go

index f8a4a151a626a68184f15e50d6dfb0da1fb841ea..a3d6fca466c3b54d8916d8271ceed0b9d322c007 100644 (file)
--- a/client.go
+++ b/client.go
@@ -632,21 +632,21 @@ func (cl *Client) handshakesConnection(ctx context.Context, nc net.Conn, t *Torr
 // Returns nil connection and nil error if no connection could be established
 // for valid reasons.
 func (cl *Client) establishOutgoingConnEx(t *Torrent, addr IpPort, obfuscatedHeader bool) (*connection, error) {
-       ctx, cancel := context.WithTimeout(context.Background(), func() time.Duration {
+       dialCtx, cancel := context.WithTimeout(context.Background(), func() time.Duration {
                cl.rLock()
                defer cl.rUnlock()
                return t.dialTimeout()
        }())
        defer cancel()
-       dr := cl.dialFirst(ctx, addr.String())
+       dr := cl.dialFirst(dialCtx, addr.String())
        nc := dr.Conn
        if nc == nil {
-               if ctx.Err() != nil {
-                       return nil, ctx.Err()
+               if dialCtx.Err() != nil {
+                       return nil, xerrors.Errorf("dialing: %w", dialCtx.Err())
                }
                return nil, errors.New("dial failed")
        }
-       c, err := cl.handshakesConnection(ctx, nc, t, obfuscatedHeader, addr, dr.Network)
+       c, err := cl.handshakesConnection(context.Background(), nc, t, obfuscatedHeader, addr, dr.Network)
        if err != nil {
                nc.Close()
        }