From d9bd5de0b12b00db813dcfaec2f8f12636b721a1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 12 Jan 2006 22:18:38 +0000 Subject: [PATCH] Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru HTTP proxy. --- CHANGES | 10 +++++++--- RELEASE-NOTES | 3 +++ lib/ftp.c | 16 +++++++++++++--- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 3231bcaf2..75128e41f 100644 --- 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* diff --git a/RELEASE-NOTES b/RELEASE-NOTES index d25be6851..e54158989 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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: diff --git a/lib/ftp.c b/lib/ftp.c index ad4989968..7f52127c4 100644 --- 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),