- markus@cvs.openbsd.org 2003/12/02 12:15:10
     [progressmeter.c]
     improvments from andreas@:
     * saner speed estimate for transfers that takes less than a second by
       rounding the time to 1 second.
     * when the transfer is finished calculate the actual total speed
       rather than the current speed which is given during the transfer
diff --git a/ChangeLog b/ChangeLog
index 545e5c3..648a823 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,13 @@
      [cipher-aes.c]
      fix #ifdef before #define; ok markus@
      (RCS ID sync only, Portable already had this)
+   - markus@cvs.openbsd.org 2003/12/02 12:15:10
+     [progressmeter.c]
+     improvments from andreas@:
+     * saner speed estimate for transfers that takes less than a second by
+       rounding the time to 1 second.
+     * when the transfer is finished calculate the actual total speed
+       rather than the current speed which is given during the transfer
 
 20031208
  - (tim) [configure.ac] Bug 770. Fix --without-rpath.
@@ -1545,4 +1552,4 @@
  - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo.
    Report from murple@murple.net, diagnosis from dtucker@zip.com.au
 
-$Id: ChangeLog,v 1.3133 2003/12/09 08:05:42 dtucker Exp $
+$Id: ChangeLog,v 1.3134 2003/12/09 08:07:13 dtucker Exp $
diff --git a/progressmeter.c b/progressmeter.c
index 39940bd..7b76c95 100644
--- a/progressmeter.c
+++ b/progressmeter.c
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: progressmeter.c,v 1.17 2003/11/20 11:39:28 markus Exp $");
+RCSID("$OpenBSD: progressmeter.c,v 1.18 2003/12/02 12:15:10 markus Exp $");
 
 #include "progressmeter.h"
 #include "atomicio.h"
@@ -120,14 +120,18 @@
 
 	if (bytes_left > 0)
 		elapsed = now - last_update;
-	else
+	else {
 		elapsed = now - start;
+		/* Calculate true total speed when done */
+		transferred = end_pos;
+		bytes_per_second = 0;
+	}
 
 	/* calculate speed */
 	if (elapsed != 0)
 		cur_speed = (transferred / elapsed);
 	else
-		cur_speed = 0;
+		cur_speed = transferred;
 
 #define AGE_FACTOR 0.9
 	if (bytes_per_second != 0) {