summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurie Clark-Michalek <lcm@fb.com>2018-03-28 15:42:33 +0100
committerDaniel Stenberg <daniel@haxx.se>2018-04-06 14:30:59 +0200
commit5f3938bc4a9c41e2ecf05c081f27e7b83f82f073 (patch)
treed67f6d3c3983bdea47326d555f1fa07c484b20d4
parent695e96b3d5b9e6ae4832af5f8e99e07de960bf33 (diff)
downloadcurl-5f3938bc4a9c41e2ecf05c081f27e7b83f82f073.tar.gz
FTP: allow PASV on IPv6 connections when a proxy is being used
In the situation of a client connecting to an FTP server using an IPv6 tunnel proxy, the connection info will indicate that the connection is IPv6. However, because the server behing the proxy is IPv4, it is permissable to attempt PSV mode. In the case of the FTP server being IPv4 only, EPSV will always fail, and with the current logic curl will be unable to connect to the server, as the IPv6 fwdproxy causes curl to think that EPSV is impossible. Closes #2432
-rw-r--r--lib/ftp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index 0cc583ba7..ef97d08bb 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1788,7 +1788,7 @@ static CURLcode ftp_epsv_disable(struct connectdata *conn)
{
CURLcode result = CURLE_OK;
- if(conn->bits.ipv6) {
+ if(conn->bits.ipv6 && !(conn->bits.tunnel_proxy || conn->bits.socksproxy)) {
/* We can't disable EPSV when doing IPv6, so this is instead a fail */
failf(conn->data, "Failed EPSV attempt, exiting\n");
return CURLE_WEIRD_SERVER_REPLY;