Commit 9ca688c8 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

James Bursa's improvement

parent 8edbe262
Loading
Loading
Loading
Loading
+21 −10
Original line number Diff line number Diff line
@@ -13,7 +13,10 @@
 * Written by Michael Wallner
 */

#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <curl/multi.h>

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,22 +130,26 @@ 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;
      }
      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\n");
          fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n",
              M+1, L, errno, strerror(errno));
          return EXIT_FAILURE;
        }
      }
    }

    while ((msg = curl_multi_info_read(cm, &Q))) {
      if (msg->msg == CURLMSG_DONE) {