Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
authorDaniel Stenberg <daniel@haxx.se>
Thu, 12 Jan 2006 22:18:38 +0000 (22:18 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 12 Jan 2006 22:18:38 +0000 (22:18 +0000)
HTTP proxy.

CHANGES
RELEASE-NOTES
lib/ftp.c

diff --git a/CHANGES b/CHANGES
index 3231bca..75128e4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,9 +7,13 @@
                                   Changelog
 
 Daniel (12 January 2006)
-- Michael Jahn fixed PROXYTUNNEL to work fine when you do ftp through a proxy.
-  It would previously overwrite internal memory and cause unpredicted
-  behaviour!
+- Michael Jahn:
+
+  Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
+  HTTP proxy.
+
+  Fixed PROXYTUNNEL to work fine when you do ftp through a proxy.  It would
+  previously overwrite internal memory and cause unpredicted behaviour!
 
 Daniel (11 January 2006)
 - I decided to document the "secret option" here now, as I've received *NO*
index d25be68..e541589 100644 (file)
@@ -15,6 +15,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o FTP_SKIP_PASV_IP and FTP_USE_EPSV when doing FTP over HTTP proxy
  o Doing a second request with FTP on the same bath path, would make libcurl
    confuse what current working directory it had
  o FTP over HTTP proxy now sends the second CONNECT properly
@@ -28,6 +29,8 @@ Other curl-related news since the previous public release:
  o http://curl.hkmirror.org/ is a new curl web mirror in Hong Kong
  o http://curl.storemypix.com/ is a new curl web mirror in Germany
  o http://curl.s-lines.net/ is a new curl web mirror in Japan
+ o TclCurl 0.15.1 was released:
+   http://personal1.iddeo.es/andresgarci/tclcurl/english/
 
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
index ad49899..7f52127 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1543,8 +1543,13 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
         if(ptr) {
           newport = num;
 
-          /* use the same IP we are already connected to */
-          snprintf(newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);
+          if (conn->bits.tunnel_proxy)
+            /* proxy tunnel -> use other host info because ip_addr_str is the
+               proxy address not the ftp host */
+            snprintf(newhost, sizeof(newhost), "%s", conn->host.name);
+          else
+            /* use the same IP we are already connected to */
+            snprintf(newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);
         }
       }
       else
@@ -1590,7 +1595,12 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
       infof(data, "Skips %d.%d.%d.%d for data connection, uses %s instead\n",
             ip[0], ip[1], ip[2], ip[3],
             conn->ip_addr_str);
-      snprintf(newhost, sizeof(newhost), "%s", conn->ip_addr_str);
+      if (conn->bits.tunnel_proxy)
+        /* proxy tunnel -> use other host info because ip_addr_str is the
+           proxy address not the ftp host */
+        snprintf(newhost, sizeof(newhost), "%s", conn->host.name);
+      else
+        snprintf(newhost, sizeof(newhost), "%s", conn->ip_addr_str);
     }
     else
       snprintf(newhost, sizeof(newhost),