From 576c36575306f4cbce161d2b2d445904da7586d0 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Thu, 7 Jan 2016 12:18:00 +0100 Subject: [PATCH] Don't resolve destination address until we need to (fixes #2671) --- lib/connections/connections_tcp.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/connections/connections_tcp.go b/lib/connections/connections_tcp.go index e2ce1cb4..5dce3106 100644 --- a/lib/connections/connections_tcp.go +++ b/lib/connections/connections_tcp.go @@ -23,6 +23,7 @@ func init() { } func tcpDialer(uri *url.URL, tlsCfg *tls.Config) (*tls.Conn, error) { + // Check that there is a port number in uri.Host, otherwise add one. host, port, err := net.SplitHostPort(uri.Host) if err != nil && strings.HasPrefix(err.Error(), "missing port") { // addr is on the form "1.2.3.4" @@ -32,13 +33,9 @@ func tcpDialer(uri *url.URL, tlsCfg *tls.Config) (*tls.Conn, error) { uri.Host = net.JoinHostPort(host, "22000") } - raddr, err := net.ResolveTCPAddr("tcp", uri.Host) - if err != nil { - l.Debugln(err) - return nil, err - } - - conn, err := dialer.Dial(raddr.Network(), raddr.String()) + // Don't try to resolve the address before dialing. The dialer may be a + // proxy, and we should let the proxy do the resolving in that case. + conn, err := dialer.Dial("tcp", uri.Host) if err != nil { l.Debugln(err) return nil, err