aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES4
-rw-r--r--RELEASE-NOTES3
-rw-r--r--lib/ftp.c8
3 files changed, 12 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index df65c2737..88771532d 100644
--- 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
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 085748017..134144e90 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -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)
diff --git a/lib/ftp.c b/lib/ftp.c
index 2e0740f64..5e04b7e81 100644
--- 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);