aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tool_operate.c42
1 files changed, 2 insertions, 40 deletions
diff --git a/src/tool_operate.c b/src/tool_operate.c
index 7cb2f01f9..946dc7cca 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -1904,23 +1904,6 @@ static CURLcode create_transfers(struct GlobalConfig *global,
return result;
}
-/* portable millisecond sleep */
-static void wait_ms(int ms)
-{
-#if defined(MSDOS)
- delay(ms);
-#elif defined(WIN32)
- Sleep(ms);
-#elif defined(HAVE_USLEEP)
- usleep(1000 * ms);
-#else
- struct timeval pending_tv;
- pending_tv.tv_sec = ms / 1000;
- pending_tv.tv_usec = (ms % 1000) * 1000;
- (void)select(0, NULL, NULL, NULL, &pending_tv);
-#endif
-}
-
static long all_added; /* number of easy handles currently added */
static int add_parallel_transfers(struct GlobalConfig *global,
@@ -1971,30 +1954,9 @@ static CURLcode parallel_transfers(struct GlobalConfig *global,
return result;
while(!done && !mcode && still_running) {
- int numfds;
- struct timeval before = tvnow();
- long delta;
-
- mcode = curl_multi_wait(multi, NULL, 0, 1000, &numfds);
- delta = tvdiff(tvnow(), before);
-
- if(!mcode) {
- if(!numfds && (delta < 30)) {
- long sleep_ms;
-
- /* If it returns without any file descriptor instantly, we need to
- avoid busy-looping during periods where it has nothing particular
- to wait for */
- curl_multi_timeout(multi, &sleep_ms);
- if(sleep_ms) {
- if(sleep_ms > 1000)
- sleep_ms = 1000;
- wait_ms((int)sleep_ms);
- }
- }
-
+ mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
+ if(!mcode)
mcode = curl_multi_perform(multi, &still_running);
- }
progress_meter(global, &start, FALSE);