From 9ca688c8e71c9b3313ceeaf1f4037341befd3c0c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 27 Jun 2007 21:35:17 +0000 Subject: James Bursa's improvement --- docs/examples/10-at-a-time.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'docs/examples/10-at-a-time.c') diff --git a/docs/examples/10-at-a-time.c b/docs/examples/10-at-a-time.c index 41c2f4883..29c7f08d9 100644 --- a/docs/examples/10-at-a-time.c +++ b/docs/examples/10-at-a-time.c @@ -13,7 +13,10 @@ * Written by Michael Wallner */ +#include #include +#include +#include #include static const char *urls[] = { @@ -106,6 +109,10 @@ int main(void) cm = curl_multi_init(); + /* we can optionally limit the total amount of connections this multi handle + uses */ + curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, MAX); + for (C = 0; C < MAX; ++C) { init(cm, C); } @@ -123,20 +130,24 @@ int main(void) return EXIT_FAILURE; } - /* In a real-world program you OF COURSE check the return that maxfd is - bigger than -1 so that the call to select() below makes sense! */ - if (curl_multi_timeout(cm, &L)) { fprintf(stderr, "E: curl_multi_timeout\n"); return EXIT_FAILURE; } - - T.tv_sec = L/1000; - T.tv_usec = (L%1000)*1000; - - if (0 > select(M+1, &R, &W, &E, &T)) { - fprintf(stderr, "E: select\n"); - return EXIT_FAILURE; + if (L == -1) + L = 100; + + if (M == -1) { + sleep(L / 1000); + } else { + T.tv_sec = L/1000; + T.tv_usec = (L%1000)*1000; + + if (0 > select(M+1, &R, &W, &E, &T)) { + fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n", + M+1, L, errno, strerror(errno)); + return EXIT_FAILURE; + } } } -- cgit v1.2.3