Try EPSV when PASV fails

This commit is contained in:
Arnaud Ysmal 2013-12-05 19:29:22 +01:00
parent a3bb5b8714
commit 6bad3e176c

13
ftp.go
View File

@ -200,20 +200,15 @@ func (c *ServerConn) openDataConn() (net.Conn, error) {
// else -> PASV
_, nat6Supported := c.features["nat6"]
_, epsvSupported := c.features["EPSV"]
// If host is IPv6 => EPSV
if strings.ContainsAny(c.host, ":%") {
epsvSupported = true
if !nat6Supported && !epsvSupported {
port, _ = c.pasv()
}
if nat6Supported || epsvSupported {
if port == 0 {
port, err = c.epsv()
if err != nil {
return nil, err
}
} else {
port, err = c.pasv()
if err != nil {
return nil, err
}
}
// Build the new net address string