]> granicus.if.org Git - curl/commitdiff
FTP: if EPSV fails on IPV6 connections, bail out
authorDaniel Stenberg <daniel@haxx.se>
Thu, 8 Jan 2015 19:43:32 +0000 (20:43 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 8 Jan 2015 21:32:37 +0000 (22:32 +0100)
... instead of trying PASV, since PASV can't work with IPv6.

Reported-by: Vojtěch Král
lib/ftp.c

index 528b4c13c0343e4f5b7c7f7543bc0bb626b7388d..68610f95867d4392506453925d51da7fda118045 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1815,6 +1815,13 @@ static CURLcode ftp_state_quote(struct connectdata *conn,
 static CURLcode ftp_epsv_disable(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
+
+  if(conn->bits.ipv6) {
+    /* We can't disable EPSV when doing IPv6, so this is instead a fail */
+    failf(conn->data, "Failed EPSV attempt, exiting\n");
+    return CURLE_FTP_WEIRD_SERVER_REPLY;
+  }
+
   infof(conn->data, "Failed EPSV attempt. Disabling EPSV\n");
   /* disable it for next transfer */
   conn->bits.ftp_use_epsv = FALSE;