libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit a03cd38794f0a4f896f8f3156baddfca555634bb
parent f5d387df7e7fb8de1a5dd0739ddb83a8b19fe64b
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Sun, 15 Aug 2021 15:51:01 +0300

test_callback: improved test

Added detection of curl reported errors,
Added check that data was sent.

Diffstat:
Msrc/testcurl/test_callback.c | 46+++++++++++++++++++++++++++++-----------------
1 file changed, 29 insertions(+), 17 deletions(-)

diff --git a/src/testcurl/test_callback.c b/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);