From 038542ea3ef5be195ae30b8d655fcec34dfba9e2 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 30 Sep 2008 09:51:58 +0000 Subject: - 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. --- lib/ftp.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/ftp.c') diff --git a/lib/ftp.c b/lib/ftp.c index 1ec4091cb..e495a2cef 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -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 */ -- cgit v1.2.3