diff options
author | Daniel Stenberg <daniel@haxx.se> | 2021-03-11 10:00:02 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-03-11 16:13:11 +0100 |
commit | 7b2f0676c2eaaa99e8773134414769fab02c2b2d (patch) | |
tree | ee25251fa5e58ba6f17b7192b87e45bbb876a61e | |
parent | dcccd8dd25a8e9d476f9bda94f9ebfd0b9f472db (diff) | |
download | curl-7b2f0676c2eaaa99e8773134414769fab02c2b2d.tar.gz |
FTP: allow SIZE to fail when doing (resumed) upload
Added test 362 to verify.
Reported-by: Jordan Brown
Regression since 7ea2e1d0c5a7f (7.73.0)
Fixes #6715
Closes #6725
-rw-r--r-- | lib/ftp.c | 8 | ||||
-rw-r--r-- | tests/data/Makefile.inc | 2 | ||||
-rw-r--r-- | tests/data/test362 | 51 |
3 files changed, 58 insertions, 3 deletions
@@ -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) { diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index f6e48e3de..6306b5980 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -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 index 000000000..ad585419d --- /dev/null +++ b/tests/data/test362 @@ -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
+PASS ftp@example.com
+PWD
+EPSV
+TYPE I
+SIZE 362
+STOR 362
+QUIT
+</protocol> +</verify> +</testcase> |