From c55d0bb80435aef2e06a34c006da410b47982d92 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Mon, 12 Nov 2001 08:50:59 +0000
Subject: [PATCH] We need at least one millisecond to calculate current speed
 with! I also made the getinfo() stuff divide with 1000.0 now to enforce
 floating point since Paul Harrington claims the 7.9.1 still uses even second
 resolution in the timers there

---
 lib/progress.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/progress.c b/lib/progress.c
index c4b1f51533..8657446549 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -119,15 +119,15 @@ void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
 
   case TIMER_NAMELOOKUP:
     data->progress.t_nslookup +=
-      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000;
+      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
     break;
   case TIMER_CONNECT:
     data->progress.t_connect +=
-      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000;
+      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
     break;
   case TIMER_PRETRANSFER:
     data->progress.t_pretransfer +=
-      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000;
+      (double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
     break;
   case TIMER_POSTRANSFER:
     /* this is the normal end-of-transfer thing */
@@ -275,6 +275,8 @@ int Curl_pgrsUpdate(struct connectdata *conn)
     /* Figure out the exact time for the time span */
     span_ms = Curl_tvdiff(now,
                           data->progress.speeder_time[checkindex]);
+    if(0 == span_ms)
+      span_ms=1; /* at least one millisecond MUST have passed */
 
     /* Calculate the average speed the last 'countindex' seconds */
     data->progress.current_speed =
-- 
GitLab