]> granicus.if.org Git - curl/commitdiff
Song Ma helped me verify and extend a fix for doing FTP over a SOCKS4/5 proxy
authorDaniel Stenberg <daniel@haxx.se>
Sun, 1 Jul 2007 21:28:14 +0000 (21:28 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 1 Jul 2007 21:28:14 +0000 (21:28 +0000)
CHANGES
RELEASE-NOTES
lib/ftp.c

diff --git a/CHANGES b/CHANGES
index df65c2737086d8064766575e792c8de40b18f04e..88771532d031f9b3c84c086aad9a93c98102c721 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
 
                                   Changelog
 
+Daniel S (1 July 2007)
+- Song Ma helped me verify and extend a fix for doing FTP over a SOCKS4/5
+  proxy.
+
 Daniel S (27 June 2007)
 - James Housley: Add two new options for the SFTP/SCP/FILE protocols:
   CURLOPT_NEW_FILE_PERMS and CURLOPT_NEW_DIRECTORY_PERMS. These control the
index 085748017400b707c07feef47a3e0c6adb1e5624..134144e905ffd8c4f7a9192148705572ff44c601 100644 (file)
@@ -19,6 +19,7 @@ This release includes the following bugfixes:
  o adjusted how libcurl treats HTTP 1.1 responses without content-lenth or
    chunked encoding
  o fixed the 10-at-a-time.c example
+ o FTP over SOCKS proxy
 
 This release includes the following known bugs:
 
@@ -35,6 +36,6 @@ New curl mirrors:
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
- Robert Iakobashvili, James Housley, Günter Knauf, James Bursa
+ Robert Iakobashvili, James Housley, Günter Knauf, James Bursa, Song Ma
 
         Thanks! (and sorry if I forgot to mention someone)
index 2e0740f64b0305a073136078962690ea9b70431c..5e04b7e81c61ba903d3214b061eb0ec1bc3ae309 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1610,7 +1610,9 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
         if(ptr) {
           newport = (unsigned short)(num & 0xffff);
 
-          if (conn->bits.tunnel_proxy)
+          if (conn->bits.tunnel_proxy ||
+              data->set.proxytype == CURLPROXY_SOCKS5 ||
+              data->set.proxytype == CURLPROXY_SOCKS4)
             /* 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);
@@ -1662,7 +1664,9 @@ 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);
-      if (conn->bits.tunnel_proxy)
+      if (conn->bits.tunnel_proxy ||
+          data->set.proxytype == CURLPROXY_SOCKS5 ||
+          data->set.proxytype == CURLPROXY_SOCKS4)
         /* 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);