--- lib/ftp.c +++ lib/ftp.c @@ -1652,6 +1652,17 @@ &connected); Curl_resolv_unlock(data, addr); /* we're done using this address */ + if (result && ftp->count1 == 0 && ftpcode == 229) { + infof(data, "got positive EPSV response, but can't connect\n"); + /* disable it for next transfer */ + conn->bits.ftp_use_epsv = FALSE; + infof(data, "disabling EPSV usage\n"); + + NBFTPSENDF(conn, "PASV", NULL); + ftp->count1++; + /* remain in the FTP_PASV state */ + return result; + } if(result) return result;