aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/url.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/url.c b/lib/url.c
index 3fef8b651..8c23ae998 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -2022,14 +2022,20 @@ static CURLcode Connect(struct UrlData *data,
if(old_conn->proxyhost)
free(old_conn->proxyhost);
conn = conn_temp; /* use this connection from now on */
- free(conn->path); /* free the previous path pointer */
/* we need these pointers if we speak over a proxy */
conn->name = conn->gname;
conn->hostname = old_conn->gname;
conn->path = path; /* use this one */
- conn->ppath = path; /* set this too */
+
+ /* The 'ppath' may have been advanced a few steps from the 'path' start
+ point. We must also advance our new pointer as many steps as the
+ previous one was! This was the cause of the multiple ftp file bug
+ found on May 9 2001 libcurl 7.7.3 */
+ conn->ppath = (old_conn->ppath - old_conn->path)+path;
+
+ free(old_conn->path); /* free the previous path pointer */
/* re-use init */
conn->bits.reuse = TRUE; /* yes, we're re-using here */