- The libcurl FTP code now returns CURLE_REMOTE_FILE_NOT_FOUND error when SIZE
gets a 550 response back for the cases where a download (or NOBODY) is wanted. It still allows a 550 as response if the SIZE is used as part of an upload process (like if resuming an upload is requested and the file isn't there before the upload). I also modified the FTP test server and a few test cases accordingly to match this modified behavior.
This commit is contained in:
Родитель
beb14ca6d6
Коммит
038542ea3e
8
CHANGES
8
CHANGES
|
@ -6,6 +6,14 @@
|
|||
|
||||
Changelog
|
||||
|
||||
Daniel Stenberg (30 Sep 2008)
|
||||
- The libcurl FTP code now returns CURLE_REMOTE_FILE_NOT_FOUND error when SIZE
|
||||
gets a 550 response back for the cases where a download (or NOBODY) is
|
||||
wanted. It still allows a 550 as response if the SIZE is used as part of an
|
||||
upload process (like if resuming an upload is requested and the file isn't
|
||||
there before the upload). I also modified the FTP test server and a few test
|
||||
cases accordingly to match this modified behavior.
|
||||
|
||||
Daniel Stenberg (29 Sep 2008)
|
||||
- Daniel Egger provided a patch that allows you to disable proxy support in
|
||||
libcurl to somewhat reduce the size of the binary. Run configure
|
||||
|
|
|
@ -31,6 +31,7 @@ This release includes the following bugfixes:
|
|||
o HTTP Digest with a blank realm did wrong
|
||||
o CURLINFO_REDIRECT_URL didn't work with the multi interface
|
||||
o CURLOPT_RANGE now works for SFTP downloads
|
||||
o FTP SIZE response 550 now causes CURLE_REMOTE_FILE_NOT_FOUND
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
|
|
|
@ -2188,6 +2188,10 @@ static CURLcode ftp_state_size_resp(struct connectdata *conn,
|
|||
curl_off_t filesize;
|
||||
char *buf = data->state.buffer;
|
||||
|
||||
if((instate != FTP_STOR_SIZE) && (ftpcode == 550))
|
||||
/* the file doesn't exist and we're not about to upload */
|
||||
return CURLE_REMOTE_FILE_NOT_FOUND;
|
||||
|
||||
/* get the size from the ascii string: */
|
||||
filesize = (ftpcode == 213)?curlx_strtoofft(buf+4, NULL, 0):-1;
|
||||
|
||||
|
@ -3165,6 +3169,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
|
|||
case CURLE_UPLOAD_FAILED:
|
||||
case CURLE_REMOTE_ACCESS_DENIED:
|
||||
case CURLE_FILESIZE_EXCEEDED:
|
||||
case CURLE_REMOTE_FILE_NOT_FOUND:
|
||||
/* the connection stays alive fine even though this happened */
|
||||
/* fall-through */
|
||||
case CURLE_OK: /* doesn't affect the control connection's status */
|
||||
|
|
|
@ -9,6 +9,9 @@ FAILURE
|
|||
</info>
|
||||
# Server-side
|
||||
<reply>
|
||||
<size>
|
||||
1
|
||||
</size>
|
||||
<servercmd>
|
||||
REPLY RETR 314 bluah you f00l!
|
||||
REPLY EPSV 314 bluah you f00l!
|
||||
|
|
|
@ -45,10 +45,8 @@ CWD path
|
|||
EPSV
|
||||
TYPE I
|
||||
SIZE 533
|
||||
RETR 533
|
||||
EPSV
|
||||
SIZE 533
|
||||
RETR 533
|
||||
QUIT
|
||||
</protocol>
|
||||
</verify>
|
||||
|
|
|
@ -45,7 +45,6 @@ CWD path
|
|||
EPSV
|
||||
TYPE I
|
||||
SIZE 534
|
||||
RETR 534
|
||||
QUIT
|
||||
</protocol>
|
||||
</verify>
|
||||
|
|
|
@ -19,8 +19,6 @@ works
|
|||
</data>
|
||||
|
||||
<servercmd>
|
||||
REPLY RETR 550 the file doesn't exist
|
||||
COUNT RETR 1
|
||||
REPLY SIZE 550 Can't check for file existence
|
||||
COUNT SIZE 1
|
||||
</servercmd>
|
||||
|
@ -52,7 +50,6 @@ CWD path
|
|||
EPSV
|
||||
TYPE I
|
||||
SIZE 546
|
||||
RETR 546
|
||||
EPSV
|
||||
SIZE 546
|
||||
RETR 546
|
||||
|
|
|
@ -389,12 +389,14 @@ sub SIZE_command {
|
|||
|
||||
my $size = $data[0];
|
||||
|
||||
if($size) {
|
||||
if($size ne "") {
|
||||
# we check for "" to be able to explictly set the size to 0 and yet have
|
||||
# that send a 213
|
||||
if($size > -1) {
|
||||
sendcontrol "213 $size\r\n";
|
||||
}
|
||||
else {
|
||||
sendcontrol "550 $testno: No such file or directory.\r\n";
|
||||
sendcontrol "350 $testno: SIZE is not supported.\r\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -407,7 +409,7 @@ sub SIZE_command {
|
|||
sendcontrol "213 $size\r\n";
|
||||
}
|
||||
else {
|
||||
sendcontrol "550 $testno: No such file or directory.\r\n";
|
||||
sendcontrol "350 $testno: SIZE is not supported.\r\n";
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче