Ver código fonte

test_callback: improved test

Added detection of curl reported errors,
Added check that data was sent.
Evgeny Grin (Karlson2k) 4 anos atrás
pai
commit
a03cd38794
1 arquivos alterados com 29 adições e 17 exclusões
  1. 29 17
      src/testcurl/test_callback.c

+ 29 - 17
src/testcurl/test_callback.c

@@ -54,6 +54,7 @@ called_twice (void *cls, uint64_t pos, char *buf, size_t max)
   }
   fprintf (stderr,
            "Handler called after returning END_OF_STREAM!\n");
+  abort ();
   return MHD_CONTENT_READER_END_WITH_ERROR;
 }
 
@@ -170,7 +171,7 @@ main (int argc, char **argv)
   {
     curl_easy_cleanup (c);
     MHD_stop_daemon (d);
-    return 1;
+    return 99;
   }
   mret = curl_multi_add_handle (multi, c);
   if (mret != CURLM_OK)
@@ -178,7 +179,7 @@ main (int argc, char **argv)
     curl_multi_cleanup (multi);
     curl_easy_cleanup (c);
     MHD_stop_daemon (d);
-    return 2;
+    return 99;
   }
   extra = 10;
   while ( (c != NULL) || (--extra > 0) )
@@ -198,7 +199,7 @@ main (int argc, char **argv)
         curl_multi_cleanup (multi);
         curl_easy_cleanup (c);
         MHD_stop_daemon (d);
-        return 3;
+        return 99;
       }
     }
     if (MHD_YES !=
@@ -231,22 +232,33 @@ main (int argc, char **argv)
       curl_multi_perform (multi, &running);
       if (running == 0)
       {
-        msg = curl_multi_info_read (multi, &running);
-        if (msg == NULL)
-          break;
-        if (msg->msg == CURLMSG_DONE)
+        int pending;
+        int curl_fine = 0;
+        while (NULL != (msg = curl_multi_info_read (multi, &pending)))
         {
-          if (msg->data.result != CURLE_OK)
-            printf ("%s failed at %s:%d: `%s'\n",
-                    "curl_multi_perform",
-                    __FILE__,
-                    __LINE__, curl_easy_strerror (msg->data.result));
-          curl_multi_remove_handle (multi, c);
-          curl_multi_cleanup (multi);
-          curl_easy_cleanup (c);
-          c = NULL;
-          multi = NULL;
+          if (msg->msg != CURLMSG_DONE)
+          {
+            if (msg->data.result != CURLE_OK)
+              fprintf (stderr,
+                       "%s failed at %s:%d: `%s'\n",
+                       "curl_multi_perform",
+                       __FILE__,
+                       __LINE__, curl_easy_strerror (msg->data.result));
+            abort ();
+          }
+          else
+            curl_fine = 1;
         }
+        if (! curl_fine)
+        {
+          fprintf (stderr, "libcurl haven't returned OK code\n");
+          abort ();
+        }
+        curl_multi_remove_handle (multi, c);
+        curl_multi_cleanup (multi);
+        curl_easy_cleanup (c);
+        c = NULL;
+        multi = NULL;
       }
     }
     MHD_run (d);