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:
parent
23b395751d
commit
b33f6e0005
7
ftp.go
7
ftp.go
@ -59,12 +59,15 @@ func Dial(addr string) (*ServerConn, error) {
|
|||||||
// It is generally followed by a call to Login() as most FTP commands require
|
// It is generally followed by a call to Login() as most FTP commands require
|
||||||
// an authenticated user.
|
// an authenticated user.
|
||||||
func DialTimeout(addr string, timeout time.Duration) (*ServerConn, error) {
|
func DialTimeout(addr string, timeout time.Duration) (*ServerConn, error) {
|
||||||
host, _, err := net.SplitHostPort(addr)
|
tconn, err := net.DialTimeout("tcp", addr, timeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user