lib/dialer: Preserve nilness in error handling (fixes #6368) (#6369)

Also the call site where it shouldn't anyway be looking at the conn when
the err is non-nil.
This commit is contained in:
Jakob Borg 2020-02-26 13:16:18 +01:00 committed by GitHub
parent cb624dbf5d
commit 4e4b9a872a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 6 deletions

View File

@ -76,10 +76,10 @@ func dialContextWithFallback(ctx context.Context, fallback proxy.ContextDialer,
if noFallback { if noFallback {
conn, err := dialer.DialContext(ctx, network, addr) conn, err := dialer.DialContext(ctx, network, addr)
l.Debugf("Dialing no fallback result %s %s: %v %v", network, addr, conn, err) l.Debugf("Dialing no fallback result %s %s: %v %v", network, addr, conn, err)
conn = dialerConn{ if err != nil {
conn, newDialerAddr(network, addr), return nil, err
} }
return conn, err return dialerConn{conn, newDialerAddr(network, addr)}, nil
} }
ctx, cancel := context.WithCancel(ctx) ctx, cancel := context.WithCancel(ctx)
@ -91,8 +91,8 @@ func dialContextWithFallback(ctx context.Context, fallback proxy.ContextDialer,
go func() { go func() {
proxyConn, proxyErr = dialer.DialContext(ctx, network, addr) proxyConn, proxyErr = dialer.DialContext(ctx, network, addr)
l.Debugf("Dialing proxy result %s %s: %v %v", network, addr, proxyConn, proxyErr) l.Debugf("Dialing proxy result %s %s: %v %v", network, addr, proxyConn, proxyErr)
proxyConn = dialerConn{ if proxyErr == nil {
proxyConn, newDialerAddr(network, addr), proxyConn = dialerConn{proxyConn, newDialerAddr(network, addr)}
} }
close(proxyDone) close(proxyDone)
}() }()

View File

@ -22,7 +22,7 @@ func TCPPing(ctx context.Context, address string) (time.Duration, error) {
ctx, cancel := context.WithTimeout(ctx, time.Second) ctx, cancel := context.WithTimeout(ctx, time.Second)
defer cancel() defer cancel()
conn, err := dialer.DialContext(ctx, "tcp", address) conn, err := dialer.DialContext(ctx, "tcp", address)
if conn != nil { if err == nil {
conn.Close() conn.Close()
} }
return time.Since(start), err return time.Since(start), err