examples: use do/while loop for multi examples
authorDave Reisner <dreisner@archlinux.org>
Mon, 23 Jul 2012 15:34:25 +0000 (15:34 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 27 Aug 2012 13:10:13 +0000 (15:10 +0200)
It's conceivable that after the first time curl_multi_perform returns,
the outvalue still_running will be 0, but work will have been done. This
is shown by a workload of small, purely file:// based URLs. Ensure that
we always read pending messages off the multi handle by forcing the
while loop to run at least once.

docs/examples/multi-app.c
docs/examples/multi-debugcallback.c
docs/examples/multi-double.c
docs/examples/multi-post.c
docs/examples/multi-single.c

index 9615e67bfd0213f03a566f0d67f502b947bd2407..a5f71c5ac66d69dc5f534e7a747d1b972dd05553 100644 (file)
@@ -70,7 +70,7 @@ int main(void)
   /* we start some action by calling perform right away */
   curl_multi_perform(multi_handle, &still_running);
 
-  while(still_running) {
+  do {
     struct timeval timeout;
     int rc; /* select() return code */
 
@@ -118,7 +118,7 @@ int main(void)
       curl_multi_perform(multi_handle, &still_running);
       break;
     }
-  }
+  } while(still_running);
 
   /* See how the transfers went */
   while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
index c7e819d03031ecddc84febe676542ac936ac2ba2..8eedcee5b543f41347c19a4d6150141c9791c87f 100644 (file)
@@ -144,7 +144,7 @@ int main(void)
   /* we start some action by calling perform right away */
   curl_multi_perform(multi_handle, &still_running);
 
-  while(still_running) {
+  do {
     struct timeval timeout;
     int rc; /* select() return code */
 
@@ -195,7 +195,7 @@ int main(void)
       curl_multi_perform(multi_handle, &still_running);
       break;
     }
-  }
+  } while(still_running);
 
   curl_multi_cleanup(multi_handle);
 
index 120fde7b8d5b58145f9524e6552cf72a93eec052..91422e6e2ddb2e50a6174c92cc428993b2996a02 100644 (file)
@@ -59,7 +59,7 @@ int main(void)
   /* we start some action by calling perform right away */
   curl_multi_perform(multi_handle, &still_running);
 
-  while(still_running) {
+  do {
     struct timeval timeout;
     int rc; /* select() return code */
 
@@ -108,7 +108,7 @@ int main(void)
       curl_multi_perform(multi_handle, &still_running);
       break;
     }
-  }
+  } while(still_running);
 
   curl_multi_cleanup(multi_handle);
 
index c26338b59def1538a31d10367b2dac60af03612f..965a2c3f6958c89d803a7bc9ad6683c3f31e4860 100644 (file)
@@ -80,7 +80,7 @@ int main(void)
 
     curl_multi_perform(multi_handle, &still_running);
 
-    while(still_running) {
+    do {
       struct timeval timeout;
       int rc; /* select() return code */
 
@@ -131,7 +131,7 @@ int main(void)
         printf("running: %d!\n", still_running);
         break;
       }
-    }
+    } while(still_running);
 
     curl_multi_cleanup(multi_handle);
 
index 0d354270607642787a1f21a166d653d8a81f845d..aeda71419bcc8b203aa135b6c04d101f5d2dd3ae 100644 (file)
@@ -55,7 +55,7 @@ int main(void)
   /* we start some action by calling perform right away */
   curl_multi_perform(multi_handle, &still_running);
 
-  while(still_running) {
+  do {
     struct timeval timeout;
     int rc; /* select() return code */
 
@@ -106,7 +106,7 @@ int main(void)
       curl_multi_perform(multi_handle, &still_running);
       break;
     }
-  }
+  } while(still_running);
 
   curl_multi_cleanup(multi_handle);