mirror of
https://github.com/curl/curl.git
synced 2026-08-24 19:23:38 +03:00
ftp: fix CWD when doing multicwd then nocwd on same connection
Fixes #1782 Closes #1787 Reported-by: Peter Lamare
This commit is contained in:
parent
582f2a1308
commit
c95eff4a11
4 changed files with 69 additions and 2 deletions
|
|
@ -3197,6 +3197,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
|
|||
size_t flen = ftpc->file?strlen(ftpc->file):0; /* file is "raw" already */
|
||||
size_t dlen = strlen(path)-flen;
|
||||
if(!ftpc->cwdfail) {
|
||||
ftpc->prevmethod = data->set.ftp_filemethod;
|
||||
if(dlen && (data->set.ftp_filemethod != FTPFILE_NOCWD)) {
|
||||
ftpc->prevpath = path;
|
||||
if(flen)
|
||||
|
|
@ -4305,7 +4306,8 @@ CURLcode ftp_parse_url_path(struct connectdata *conn)
|
|||
|
||||
dlen -= ftpc->file?strlen(ftpc->file):0;
|
||||
if((dlen == strlen(ftpc->prevpath)) &&
|
||||
!strncmp(path, ftpc->prevpath, dlen)) {
|
||||
!strncmp(path, ftpc->prevpath, dlen) &&
|
||||
(ftpc->prevmethod == data->set.ftp_filemethod)) {
|
||||
infof(data, "Request has same path as previous transfer\n");
|
||||
ftpc->cwddone = TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ struct ftp_conn {
|
|||
caching the current directory */
|
||||
bool wait_data_conn; /* this is set TRUE if data connection is waited */
|
||||
char *prevpath; /* conn->path from the previous transfer */
|
||||
curl_ftpfile prevmethod; /* ftp method in previous transfer */
|
||||
char transfertype; /* set by ftp_transfertype for use by Curl_client_write()a
|
||||
and others (A/I or zero) */
|
||||
int count1; /* general purpose counter for the state machine */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue