--- docs/examples/10-at-a-time.c	2006-11-11 15:45:08.515092850 -0600
+++ 10-at-a-time.c	2007-06-05 21:46:45.098033373 -0500
@@ -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[] = {
@@ -105,6 +108,7 @@
   curl_global_init(CURL_GLOBAL_ALL);
 
   cm = curl_multi_init();
+  curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, 10L);
 
   for (C = 0; C < MAX; ++C) {
     init(cm, C);
@@ -123,20 +127,24 @@
         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;
 
-      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 (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;
+        }
       }
     }
 

