client.go | 10 +++++----- diff --git a/client.go b/client.go index f8a4a151a626a68184f15e50d6dfb0da1fb841ea..a3d6fca466c3b54d8916d8271ceed0b9d322c007 100644 --- a/client.go +++ b/client.go @@ -632,21 +632,21 @@ // 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() }