[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnurl] 190/208: FTP: skip unnecessary CWD when in nocwd mo
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnurl] 190/208: FTP: skip unnecessary CWD when in nocwd mode |
Date: |
Wed, 09 Aug 2017 17:36:27 +0200 |
This is an automated email from the git hooks/post-receive script.
ng0 pushed a commit to annotated tag gnurl-7.55.0
in repository gnurl.
commit 2ccd65af3b44ef413c3746f8857ed9a1bff1b5b6
Author: Daniel Stenberg <address@hidden>
AuthorDate: Thu Aug 3 23:48:57 2017 +0200
FTP: skip unnecessary CWD when in nocwd mode
... when reusing a connection. If it didn't do any CWD previously.
Fixes #1718
---
lib/ftp.c | 23 +++++++++++++----------
lib/ftp.h | 3 ++-
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/lib/ftp.c b/lib/ftp.c
index ac8ff86fc..6e86e5386 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -887,21 +887,24 @@ static CURLcode ftp_state_cwd(struct connectdata *conn)
dir) this then allows for a second try to CWD to it */
ftpc->count3 = (conn->data->set.ftp_create_missing_dirs==2)?1:0;
- if(conn->bits.reuse && ftpc->entrypath) {
+ if((conn->data->set.ftp_filemethod == FTPFILE_NOCWD) && !ftpc->cwdcount)
+ /* No CWD necessary */
+ result = ftp_state_mdtm(conn);
+ else if(conn->bits.reuse && ftpc->entrypath) {
/* This is a re-used connection. Since we change directory to where the
transfer is taking place, we must first get back to the original dir
where we ended up after login: */
- ftpc->count1 = 0; /* we count this as the first path, then we add one
- for all upcoming ones in the ftp->dirs[] array */
+ ftpc->cwdcount = 0; /* we count this as the first path, then we add one
+ for all upcoming ones in the ftp->dirs[] array */
PPSENDF(&conn->proto.ftpc.pp, "CWD %s", ftpc->entrypath);
state(conn, FTP_CWD);
}
else {
if(ftpc->dirdepth) {
- ftpc->count1 = 1;
+ ftpc->cwdcount = 1;
/* issue the first CWD, the rest is sent when the CWD responses are
received... */
- PPSENDF(&conn->proto.ftpc.pp, "CWD %s", ftpc->dirs[ftpc->count1 -1]);
+ PPSENDF(&conn->proto.ftpc.pp, "CWD %s", ftpc->dirs[ftpc->cwdcount -1]);
state(conn, FTP_CWD);
}
else {
@@ -2936,10 +2939,10 @@ static CURLcode ftp_statemach_act(struct connectdata
*conn)
if(ftpcode/100 != 2) {
/* failure to CWD there */
if(conn->data->set.ftp_create_missing_dirs &&
- ftpc->count1 && !ftpc->count2) {
+ ftpc->cwdcount && !ftpc->count2) {
/* try making it */
ftpc->count2++; /* counter to prevent CWD-MKD loops */
- PPSENDF(&ftpc->pp, "MKD %s", ftpc->dirs[ftpc->count1 - 1]);
+ PPSENDF(&ftpc->pp, "MKD %s", ftpc->dirs[ftpc->cwdcount - 1]);
state(conn, FTP_MKD);
}
else {
@@ -2953,9 +2956,9 @@ static CURLcode ftp_statemach_act(struct connectdata
*conn)
else {
/* success */
ftpc->count2=0;
- if(++ftpc->count1 <= ftpc->dirdepth) {
+ if(++ftpc->cwdcount <= ftpc->dirdepth) {
/* send next CWD */
- PPSENDF(&ftpc->pp, "CWD %s", ftpc->dirs[ftpc->count1 - 1]);
+ PPSENDF(&ftpc->pp, "CWD %s", ftpc->dirs[ftpc->cwdcount - 1]);
}
else {
result = ftp_state_mdtm(conn);
@@ -2973,7 +2976,7 @@ static CURLcode ftp_statemach_act(struct connectdata
*conn)
}
state(conn, FTP_CWD);
/* send CWD */
- PPSENDF(&ftpc->pp, "CWD %s", ftpc->dirs[ftpc->count1 - 1]);
+ PPSENDF(&ftpc->pp, "CWD %s", ftpc->dirs[ftpc->cwdcount - 1]);
break;
case FTP_MDTM:
diff --git a/lib/ftp.h b/lib/ftp.h
index 3bbf26206..9c6c2c8de 100644
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <address@hidden>, et al.
+ * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -130,6 +130,7 @@ struct ftp_conn {
should be FALSE when it gets to Curl_ftp_quit() */
bool cwddone; /* if it has been determined that the proper CWD combo
already has been done */
+ int cwdcount; /* number of CWD commands issued */
bool cwdfail; /* set TRUE if a CWD command fails, as then we must prevent
caching the current directory */
bool wait_data_conn; /* this is set TRUE if data connection is waited */
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [gnurl] 175/208: curl_threads: fix MSVC compiler warning, (continued)
- [GNUnet-SVN] [gnurl] 175/208: curl_threads: fix MSVC compiler warning, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 196/208: getparameter: avoid returning uninitialized 'usedarg', gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 182/208: netrc: skip lines starting with '#', gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 58/208: --request-target: instead of --strip-path-slash, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 47/208: automake: use $(MKHELP) variable instead if constant mkhelp.pl, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 205/208: docs/comments: Update to secure URL versions, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 56/208: travis: enable typecheck-gcc warnings, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 55/208: typecheck-gcc: add support for CURLINFO_OFF_T, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 199/208: tftp: reject file name lengths that don't fit, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 111/208: asyn-thread.c: fix unused variable warnings on macOS, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 190/208: FTP: skip unnecessary CWD when in nocwd mode,
gnunet <=
- [GNUnet-SVN] [gnurl] 63/208: CURLINFO_REDIRECT_URL.3: mention the CURLOPT_MAXREDIRS case, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 157/208: darwinssl: fix variable type mistake (regression), gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 143/208: travis: enable warnings also in release mode, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 01/208: includes: remove curl/curlbuild.h and curl/curlrules.h, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 65/208: curl-compilers.m4: fix unknown-warning-option on Apple clang, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 90/208: gtls: fix build when sizeof(long) < sizeof(void *), gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 120/208: test1452: add telnet negotiation, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 96/208: test1451: add SMB support to the testbed, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 26/208: HTTPS-Proxy: don't offer h2 for https proxy connections, gnunet, 2017/08/09
- [GNUnet-SVN] [gnurl] 155/208: checksrc: escape open brace in regex, gnunet, 2017/08/09