]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
ftp: make the MKD retry to retry once per directory
authorRoger Young <youngr225@gmail.com>
Mon, 8 Nov 2021 18:20:23 +0000 (12:20 -0600)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 8 Nov 2021 22:05:12 +0000 (23:05 +0100)
Reported-by: Roger Young
Fixes #7967
Closes #7976

lib/ftp.c

index 0b9c9b7322b5e2098da9a93bc2746b18b20b523d..a8d209e3fb4c95881c578bda7ac9caab5bae941e 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -876,11 +876,6 @@ 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 */
-    ftpc->count3 = (data->set.ftp_create_missing_dirs == 2)?1:0;
-
     if(conn->bits.reuse && ftpc->entrypath &&
        /* no need to go to entrypath when we have an absolute path */
        !(ftpc->dirdepth && ftpc->dirs[0][0] == '/')) {
@@ -3002,6 +2997,12 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
            ftpc->cwdcount && !ftpc->count2) {
           /* try making it */
           ftpc->count2++; /* counter to prevent CWD-MKD loops */
+
+          /* count3 is set to allow MKD to fail once per dir. In the case when
+          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;
+
           result = Curl_pp_sendf(data, &ftpc->pp, "MKD %s",
                                  ftpc->dirs[ftpc->cwdcount - 1]);
           if(!result)