]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
FTP: allow SIZE to fail when doing (resumed) upload
authorDaniel Stenberg <daniel@haxx.se>
Thu, 11 Mar 2021 09:00:02 +0000 (10:00 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 11 Mar 2021 15:13:11 +0000 (16:13 +0100)
Added test 362 to verify.

Reported-by: Jordan Brown
Regression since 7ea2e1d0c5a7f (7.73.0)
Fixes #6715
Closes #6725

lib/ftp.c
tests/data/Makefile.inc
tests/data/test362 [new file with mode: 0644]

index 56e7cf29ef2f576f83455644a7814a5bd08e0a39..8b347e34fda5a33df5de069495d5bfb25439daa0 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -2309,8 +2309,12 @@ static CURLcode ftp_state_size_resp(struct Curl_easy *data,
 
   }
   else if(ftpcode == 550) { /* "No such file or directory" */
-    failf(data, "The file does not exist");
-    return CURLE_REMOTE_FILE_NOT_FOUND;
+    /* allow a SIZE failure for (resumed) uploads, when probing what command
+       to use */
+    if(instate != FTP_STOR_SIZE) {
+      failf(data, "The file does not exist");
+      return CURLE_REMOTE_FILE_NOT_FOUND;
+    }
   }
 
   if(instate == FTP_SIZE) {
index f6e48e3de767560e78fa57350e5867df6e081ed8..6306b5980fb294344c8810bea03a748704b3f919 100644 (file)
@@ -60,7 +60,7 @@ test325 test326 test327 test328 test329 test330 test331 test332 test333 \
 test334 test335 test336 test337 test338 test339 test340 test341 test342 \
 test343 test344 test345 test346 test347 test348 test349 test350 test351 \
 test352 test353 test354 test355 test356 test357 test358 test359 test360 \
-test361 \
+test361 test362 \
 \
 test393 test394 test395 test396 test397 \
 \
diff --git a/tests/data/test362 b/tests/data/test362
new file mode 100644 (file)
index 0000000..ad58541
--- /dev/null
@@ -0,0 +1,51 @@
+<testcase>
+<info>
+<keywords>
+FTP
+EPSV
+STOR
+</keywords>
+</info>
+
+# Client-side
+<client>
+<server>
+ftp
+</server>
+ <name>
+FTP resume upload file with nothing to start from
+ </name>
+<file name="log/test362.txt">
+data
+    to
+      see
+that FTP
+works
+  so does it?
+</file>
+ <command>
+ftp://%HOSTIP:%FTPPORT/362 -T log/test362.txt --continue-at -
+</command>
+</client>
+
+<verify>
+<upload>
+data
+    to
+      see
+that FTP
+works
+  so does it?
+</upload>
+<protocol>
+USER anonymous\r
+PASS ftp@example.com\r
+PWD\r
+EPSV\r
+TYPE I\r
+SIZE 362\r
+STOR 362\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>