From 7be8993f9429db4cd3633cce941d066922c25189 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 10 May 2001 09:31:48 +0000 Subject: When re-using a connection, the path pointers were not setup properly so that multiple FTP transfers were not possible --- lib/url.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lib') 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 */ -- cgit v1.2.3