Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru

HTTP proxy.
This commit is contained in:
Daniel Stenberg 2006-01-12 22:18:38 +00:00
parent 31c7aa0ba4
commit d9bd5de0b1
3 changed files with 23 additions and 6 deletions

10
CHANGES
View File

@ -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*

View 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:

View File

@ -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),