]> sjero.net Git - wget/blobdiff - src/ftp.c
[svn] Fixes by Christian Biere:
[wget] / src / ftp.c
index 436a8f52dfdf6ae3164cbaf976963c25bb4ea845..e4c3b621be6c7fae1dbe22281554edccaaca946a 100644 (file)
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -246,6 +246,7 @@ getftp (struct url *u, long *len, long restval, ccon *con)
   long expected_bytes = 0L;
   int rest_failed = 0;
   int flags;
+  long rd_size;
 
   assert (con != NULL);
   assert (con->target != NULL);
@@ -1000,13 +1001,14 @@ Error in server response, closing control connection.\n"));
   flags = 0;
   if (restval && rest_failed)
     flags |= rb_skip_startpos;
+  *len = restval;
+  rd_size = 0;
   res = fd_read_body (dtsock, fp,
                      expected_bytes ? expected_bytes - restval : 0,
-                     restval, len, &con->dltime, flags);
-  *len += restval;
+                     restval, &rd_size, len, &con->dltime, flags);
 
   tms = time_str (NULL);
-  tmrate = retr_rate (*len - restval, con->dltime, 0);
+  tmrate = retr_rate (rd_size, con->dltime, 0);
   /* Close data connection socket.  */
   fd_close (dtsock);
   fd_close (local_sock);
@@ -1194,7 +1196,7 @@ ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con)
       if (opt.verbose)
        {
          char *hurl = url_string (u, 1);
-         char tmp[15];
+         char tmp[256];
          strcpy (tmp, "        ");
          if (count > 1)
            sprintf (tmp, _("(try:%2d)"), count);
@@ -1247,7 +1249,6 @@ ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con)
          /* Not as great.  */
          abort ();
        }
-      /* Time?  */
       tms = time_str (NULL);
       if (!opt.spider)
         tmrate = retr_rate (len - restval, con->dltime, 0);