]> granicus.if.org Git - curl/commitdiff
Frederic Lepied's ftp download resume fix
authorDaniel Stenberg <daniel@haxx.se>
Tue, 17 Apr 2001 13:21:13 +0000 (13:21 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 17 Apr 2001 13:21:13 +0000 (13:21 +0000)
include/curl/curl.h
lib/ftp.c

index 5dbd7b44710a059be471f982760c3a4f79da5eb9..95c6f99703a82cbb517d3db424390c99276affa4 100644 (file)
@@ -146,7 +146,8 @@ typedef enum {
   CURLE_TOO_MANY_REDIRECTS ,     /* 47 - catch endless re-direct loops */
   CURLE_UNKNOWN_TELNET_OPTION,   /* 48 - User specified an unknown option */
   CURLE_TELNET_OPTION_SYNTAX ,   /* 49 - Malformed telnet option */
-
+  CURLE_ALREADY_COMPLETE,       /* 50 - file to dowload is already complete */
+  
   CURL_LAST /* never use! */
 } CURLcode;
 
index 701b497e6cbfd43a4562d82cd4aa05b5fd96b328..8fda9f477e70793cb02b76e23d8d6668ec3fbb3a 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1504,7 +1504,7 @@ again:;
             data->resume_from = foundsize - downloadsize;
           }
           else {
-            if(foundsize <= data->resume_from) {
+            if(foundsize < data->resume_from) {
               failf(data, "Offset (%d) was beyond file size (%d)",
                     data->resume_from, foundsize);
               return CURLE_FTP_BAD_DOWNLOAD_RESUME;
@@ -1514,6 +1514,11 @@ again:;
           }
         }
 
+       if (downloadsize == 0) {
+         failf(data, "File already complete");
+         return CURLE_ALREADY_COMPLETE;
+       }
+       
         /* Set resume file transfer offset */
         infof(data, "Instructs server to resume from offset %d\n",
               data->resume_from);