gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 40/125: curl: limit -# update frequency for unknown


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 40/125: curl: limit -# update frequency for unknown total size
Date: Sun, 21 Jan 2018 23:41:35 +0100

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit b5881d1fbd544576ec876c4374c8f71240965cdc
Author: Daniel Stenberg <address@hidden>
AuthorDate: Thu Dec 7 09:29:58 2017 +0100

    curl: limit -# update frequency for unknown total size
    
    Make it use a max 10Hz update frequency for this case as well. Return
    early if the "point" hasn't moved since last invoke.
    
    Reported-by: Elliot Saba
    
    Fixes #2158
    Closes #2163
---
 src/tool_cb_prg.c | 33 +++++++++++++++++++++++++--------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/src/tool_cb_prg.c b/src/tool_cb_prg.c
index 992b96d97..403de03a9 100644
--- a/src/tool_cb_prg.c
+++ b/src/tool_cb_prg.c
@@ -61,14 +61,27 @@ int tool_progress_cb(void *clientp,
   /* we've come this far */
   point = dlnow + ulnow + bar->initial_size;
 
-  if(bar->calls && (tvdiff(now, bar->prevtime) < 100L) && point < total)
-    /* after first call, limit progress-bar updating to 10 Hz */
-    /* update when we're at 100% even if last update is less than 200ms ago */
-    return 0;
-
-  if(point > total)
-    /* we have got more than the expected total! */
-    total = point;
+  if(bar->calls) {
+    /* after first call... */
+    if(total) {
+      /* we know the total data to get... */
+      if(bar->prev == point)
+        /* progress didn't change since last invoke */
+        return 0;
+      else if((tvdiff(now, bar->prevtime) < 100L) && point < total)
+        /* limit progress-bar updating to 10 Hz except when we're at 100% */
+        return 0;
+    }
+    else {
+      /* total is unknown */
+      if(bar->prev/1024 == point/1024)
+        /* the same kilobyte level as last invoke */
+        return 0;
+      else if(tvdiff(now, bar->prevtime) < 100L)
+        /* limit progress-bar updating to 10 Hz */
+        return 0;
+    }
+  }
 
   /* simply count invokes */
   bar->calls++;
@@ -82,6 +95,10 @@ int tool_progress_cb(void *clientp,
     }
   }
   else if(point != bar->prev) {
+    if(point > total)
+      /* we have got more than the expected total! */
+      total = point;
+
     frac = (double)point / (double)total;
     percent = frac * 100.0;
     barwidth = bar->width - 7;

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]