Simultaneous file transfer to same directory using curl_multi and CURLFTP_CREATE_DIR_RETRY.
I expected the following
Second MKD failure stores last successful CWD path in ftpc->prevpath.
> CWD 1
< 250 Directory successfully changed.
> CWD 2
< 550 Failed to change directory.
> MKD 2
< 550 Create directory operation failed.
> CWD 2
< 250 Directory successfully changed.
> CWD 3
< 550 Failed to change directory.
> MKD 3
< 550 Create directory operation failed.
* Failed to MKD dir: 550
* Remembering we are in dir "/ftp_root/1/2/3/" # should not contain final 3 dir
* Uploaded unaligned file size (0 out of 351272 bytes)
* Connection #5 to host xxxx left intact
curl/libcurl version
7.72.0
operating system
openSUSE 15.2
Linux linux-jxih 5.3.18-lp152.95-default #1 SMP Tue Oct 5 07:30:50 UTC 2021 (7cfc6af) x86_64 x86_64 x86_64 GNU/Linux
proposed patch
Change behavior to allow one MKD failure per directory.
diff --git a/lib/ftp.c b/lib/ftp.c
index 0b9c9b73..db713fdd 100644
--- a/lib/ftp.c+++ b/lib/ftp.c@@ -876,9 +876,9 @@ static CURLcode ftp_state_cwd(struct Curl_easy *data,
ftpc->count2 = 0; /* count2 counts failed CWDs */
- /* count3 is set to allow a MKD to fail once. In the case when first CWD- fails and then MKD fails (due to another session raced it to create the- dir) this then allows for a second try to CWD to it */+ /* count3 is set to allow a MKD to fail once per dir. In the case when the+ first CWD fails and then MKD fails (due to another session raced it to+ create the dir) this then allows for a second try to CWD to it */
ftpc->count3 = (data->set.ftp_create_missing_dirs == 2)?1:0;
if(conn->bits.reuse && ftpc->entrypath &&
@@ -3018,6 +3018,7 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
else {
/* success */
ftpc->count2 = 0;
+ ftpc->count3 = (data->set.ftp_create_missing_dirs == 2) ? 1 : 0;
if(++ftpc->cwdcount <= ftpc->dirdepth)
/* send next CWD */
result = Curl_pp_sendf(data, &ftpc->pp, "CWD %s",
The text was updated successfully, but these errors were encountered:
I did this
Simultaneous file transfer to same directory using
curl_multi
andCURLFTP_CREATE_DIR_RETRY
.I expected the following
Second
MKD
failure stores last successfulCWD
path inftpc->prevpath
.curl/libcurl version
7.72.0
operating system
openSUSE 15.2
Linux linux-jxih 5.3.18-lp152.95-default #1 SMP Tue Oct 5 07:30:50 UTC 2021 (7cfc6af) x86_64 x86_64 x86_64 GNU/Linux
proposed patch
Change behavior to allow one MKD failure per directory.
The text was updated successfully, but these errors were encountered: