Fix EPSV for domains with multiple A entries.

We can not use the DNS name to open the data connection, as we might get
another IP than the current host from the DNS resolution.
This commit is contained in:
Julien Laffaye 2015-08-18 23:38:53 +02:00
parent 23b395751d
commit b33f6e0005

7
ftp.go
View File

@ -59,12 +59,15 @@ func Dial(addr string) (*ServerConn, error) {
// It is generally followed by a call to Login() as most FTP commands require
// an authenticated user.
func DialTimeout(addr string, timeout time.Duration) (*ServerConn, error) {
host, _, err := net.SplitHostPort(addr)
tconn, err := net.DialTimeout("tcp", addr, timeout)
if err != nil {
return nil, err
}
tconn, err := net.DialTimeout("tcp", addr, timeout)
// Use the resolved IP address in case addr contains a domain name
// If we use the domain name, we might not resolve to the same IP.
remoteAddr := tconn.RemoteAddr().String()
host, _, err := net.SplitHostPort(remoteAddr)
if err != nil {
return nil, err
}