curl_easy_perform: gradually increase the delay time
authorDaniel Stenberg <daniel@haxx.se>
Sun, 14 Jul 2013 15:33:24 +0000 (17:33 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 19 Jul 2013 21:27:17 +0000 (23:27 +0200)
Instead of going 50,100,150 etc millisecond delay time when nothing has
been found to do or wait for, we now start lower and double each loop as
in 4,8,16,32 etc.

This lowers the minimum wait without sacrifizing the longer wait too
much with unnecessary CPU cycles burnt.

Bug: http://curl.haxx.se/mail/lib-2013-07/0103.html
Reported-by: Andreas Malzahn
lib/easy.c

index 995328e1de5f6b637382c503e8c5ab0ee8ce17e3..d84ecf541c395178a3354b35ad111e32bfd30463 100644 (file)
@@ -539,9 +539,7 @@ CURLcode curl_easy_perform(CURL *easy)
         if(curlx_tvdiff(after, before) <= 10) {
           without_fds++;
           if(without_fds > 2) {
-            int sleep_ms = without_fds * 50;
-            if(sleep_ms > 1000)
-              sleep_ms = 1000;
+            int sleep_ms = without_fds < 10 ? (1 << (without_fds-1)): 1000;
             Curl_wait_ms(sleep_ms);
           }
         }