]> sjero.net Git - wget/commitdiff
Take the maximum value between RETR and SIZE bytes counts for the file size
authorGiuseppe Scrivano <gscrivano@gnu.org>
Tue, 13 Jul 2010 23:23:17 +0000 (01:23 +0200)
committerGiuseppe Scrivano <gscrivano@gnu.org>
Tue, 13 Jul 2010 23:23:17 +0000 (01:23 +0200)
src/ChangeLog
src/ftp.c

index 78dfb97739520ef7bf2b944403e9ded8373b11ba..d337b4a707ab2ef34d93851e554f17a111054fd2 100644 (file)
@@ -1,3 +1,9 @@
+2010-07-14  Giuseppe Scrivano  <gscrivano@gnu.org>
+
+       * ftp.c (max): Add definition.
+       (getftp): Consider for`expected_bytes' the greatest value between the bytes
+       count returned by SIZE and the bytes count returned by RETR.
+
 2010-07-11  Giuseppe Scrivano  <gscrivano@gnu.org>
 
        * http.c (http_loop): New variable `force_full_retrieve'.  If the remote
index 298f4b980ddad58617273b835034cd533d9c3800..c5ac83032aa596ad659bd9fa3b384db5669618a7 100644 (file)
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -63,6 +63,8 @@ as that of the covered work.  */
 #define LIST_FILENAME ".listing"
 #endif
 
+#define max(a, b) ((a > b) ? (a) : (b))
+
 typedef struct
 {
   int st;                       /* connection status */
@@ -1019,7 +1021,9 @@ Error in server response, closing control connection.\n"));
 
       if (!opt.server_response)
         logputs (LOG_VERBOSE, _("done.\n"));
-      expected_bytes = ftp_expected_bytes (ftp_last_respline);
+
+      expected_bytes = max (ftp_expected_bytes (ftp_last_respline),
+                            expected_bytes);
     } /* do retrieve */
 
   if (cmd & DO_LIST)
@@ -1065,7 +1069,8 @@ Error in server response, closing control connection.\n"));
         }
       if (!opt.server_response)
         logputs (LOG_VERBOSE, _("done.\n"));
-      expected_bytes = ftp_expected_bytes (ftp_last_respline);
+      expected_bytes = max (ftp_expected_bytes (ftp_last_respline),
+                            expected_bytes);
     } /* cmd & DO_LIST */
 
   if (!(cmd & (DO_LIST | DO_RETR)) || (opt.spider && !(cmd & DO_LIST)))