Browse Source

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.
Jakob Borg 6 years ago
parent
commit
4e4b9a872a
2 changed files with 6 additions and 6 deletions
  1. 5 5
      lib/dialer/public.go
  2. 1 1
      lib/osutil/ping.go

+ 5 - 5
lib/dialer/public.go

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

+ 1 - 1
lib/osutil/ping.go

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