ftp: a 550 response to SIZE returns CURLE_REMOTE_FILE_NOT_FOUND

This is primarily interesting for cases where CURLOPT_NOBODY is set as
previously curl would not return an error for this case.

MDTM getting 550 now also returns this error (it returned
CURLE_FTP_COULDNT_RETR_FILE before) in order to unify return codes for
missing files across protocols and specific FTP commands.

libcurl already returns error on a 550 as a MDTM response (when
CURLOPT_FILETIME is set). If CURLOPT_NOBODY is not set, an error would
happen subsequently anyway since the RETR command would fail.

Add test 1913 and 1914 to verify. Updated several tests accordingly due
to the updated SIZE behavior.

Reported-by: Tomas Berger
Fixes #5953
Closes #5957
This commit is contained in:
Daniel Stenberg 2020-09-12 18:27:08 +02:00
parent a167949848
commit 7ea2e1d0c5
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
16 changed files with 155 additions and 8 deletions

View file

@ -207,7 +207,7 @@ test1700 test1701 test1702 \
test1800 test1801 \
\
test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \

View file

@ -11,6 +11,7 @@ FAILURE
<reply>
<servercmd>
REPLY RETR 550 no such file!
REPLY SIZE 500 command not understood
</servercmd>
</reply>

View file

@ -12,6 +12,7 @@ FAILURE
<servercmd>
REPLY RETR 314 bluah you f00l!
REPLY EPSV 314 bluah you f00l!
REPLY SIZE 500 command not understood
</servercmd>
</reply>

View file

@ -11,6 +11,7 @@ FAILURE
<reply>
<servercmd>
REPLY RETR 314 bluah you f00l!
REPLY SIZE 500 command not understood
</servercmd>
</reply>

View file

@ -15,6 +15,7 @@ this is file contents
</size>
<servercmd>
RETRNOSIZE
REPLY SIZE 500 command not understood
</servercmd>
</reply>

41
tests/data/test1913 Normal file
View file

@ -0,0 +1,41 @@
<testcase>
<info>
<keywords>
FTP
CURLOPT_NOBODY
</keywords>
</info>
# Server-side
<reply>
<servercmd>
REPLY SIZE 550 no such file
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
# require debug so that alt-svc can work over plain old HTTP
<name>
FTP with NOBODY set, getting a missing file
</name>
<tool>
lib1913
</tool>
<command>
ftp://%HOSTIP:%FTPPORT/not-there/1913
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
78
</errorcode>
</verify>
</testcase>

42
tests/data/test1914 Normal file
View file

@ -0,0 +1,42 @@
<testcase>
<info>
<keywords>
FTP
CURLOPT_NOBODY
CURLOPT_FILETIME
</keywords>
</info>
# Server-side
<reply>
<servercmd>
REPLY MDTM 550 no such file
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
# require debug so that alt-svc can work over plain old HTTP
<name>
FTP with NOBODY and FILETIME set, getting a missing file
</name>
<tool>
lib1913
</tool>
<command>
ftp://%HOSTIP:%FTPPORT/not-there/1913 1
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
78
</errorcode>
</verify>
</testcase>

View file

@ -7,6 +7,9 @@ FTP
# Server-side
<reply>
<servercmd>
REPLY SIZE 500 command not understood
</servercmd>
</reply>
# Client-side

View file

@ -11,6 +11,7 @@ FTP
REPLY SIZE 550 access to this file is very much denied
REPLY APPE 550 I said: access to this file is very much denied
REPLY STOR 550 I said: access to this file is very much denied
REPLY SIZE 500 command not understood
</servercmd>
</reply>

View file

@ -35,9 +35,9 @@ ftp://%HOSTIP:%FTPPORT/511
#
# Verify data after the test has been "shot"
<verify>
# CURLE_FTP_COULDNT_RETR_FILE
# CURLE_REMOTE_FILE_NOT_FOUND
<errorcode>
19
78
</errorcode>
<protocol>
USER anonymous

View file

@ -15,7 +15,7 @@ multi
<servercmd>
REPLY RETR 550 the file doesn't exist
REPLY SIZE 550 Can't check for file existence
REPLY SIZE 500 Can't check for file existence
</servercmd>
</reply>

View file

@ -16,7 +16,7 @@ non-existing host
<servercmd>
REPLY RETR 550 the file doesn't exist
REPLY SIZE 550 Can't check for file existence
REPLY SIZE 500 Can't check for file existence
</servercmd>
</reply>

View file

@ -21,7 +21,7 @@ works
<servercmd>
REPLY RETR 550 the file doesn't exist
COUNT RETR 1
REPLY SIZE 550 Can't check for file existence
REPLY SIZE 500 Can't check for file existence
COUNT SIZE 1
</servercmd>
</reply>