diff --git a/lib/ftp.c b/lib/ftp.c index c7246446c7f48e40a55824ef9b38aa137fc74dc6..710bee925d65e3a6634c6725693893400c5c1f09 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -1854,9 +1854,19 @@ CURLcode Curl_ftp_nextconnect(struct connectdata *conn) int size=-1; /* default unknown size */ + + /* + * It appears that there are FTP-servers that return size 0 for files + * when SIZE is used on the file while being in BINARY mode. To work + * around that (stupid) behavior, we attempt to parse the RETR response + * even if the SIZE returned size zero. + * + * Debugging help from Salvatore Sorrentino on February 26, 2003. + */ + if(!dirlist && !data->set.ftp_ascii && - (-1 == downloadsize)) { + (downloadsize < 1)) { /* * It seems directory listings either don't show the size or very * often uses size 0 anyway. ASCII transfers may very well turn out