aboutsummaryrefslogtreecommitdiff
path: root/src/testcurl/test_callback.c
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-08-15 15:51:01 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2021-08-15 15:51:01 +0300
commita03cd38794f0a4f896f8f3156baddfca555634bb (patch)
tree4777b1056b9ad3050b6059db9a451f61908a24cc /src/testcurl/test_callback.c
parentf5d387df7e7fb8de1a5dd0739ddb83a8b19fe64b (diff)
downloadlibmicrohttpd-a03cd38794f0a4f896f8f3156baddfca555634bb.tar.gz
libmicrohttpd-a03cd38794f0a4f896f8f3156baddfca555634bb.zip
test_callback: improved test
Added detection of curl reported errors, Added check that data was sent.
Diffstat (limited to 'src/testcurl/test_callback.c')
-rw-r--r--src/testcurl/test_callback.c46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/testcurl/test_callback.c b/src/testcurl/test_callback.c
index d9dfecef..fe337800 100644
--- 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)
54 } 54 }
55 fprintf (stderr, 55 fprintf (stderr,
56 "Handler called after returning END_OF_STREAM!\n"); 56 "Handler called after returning END_OF_STREAM!\n");
57 abort ();
57 return MHD_CONTENT_READER_END_WITH_ERROR; 58 return MHD_CONTENT_READER_END_WITH_ERROR;
58} 59}
59 60
@@ -170,7 +171,7 @@ main (int argc, char **argv)
170 { 171 {
171 curl_easy_cleanup (c); 172 curl_easy_cleanup (c);
172 MHD_stop_daemon (d); 173 MHD_stop_daemon (d);
173 return 1; 174 return 99;
174 } 175 }
175 mret = curl_multi_add_handle (multi, c); 176 mret = curl_multi_add_handle (multi, c);
176 if (mret != CURLM_OK) 177 if (mret != CURLM_OK)
@@ -178,7 +179,7 @@ main (int argc, char **argv)
178 curl_multi_cleanup (multi); 179 curl_multi_cleanup (multi);
179 curl_easy_cleanup (c); 180 curl_easy_cleanup (c);
180 MHD_stop_daemon (d); 181 MHD_stop_daemon (d);
181 return 2; 182 return 99;
182 } 183 }
183 extra = 10; 184 extra = 10;
184 while ( (c != NULL) || (--extra > 0) ) 185 while ( (c != NULL) || (--extra > 0) )
@@ -198,7 +199,7 @@ main (int argc, char **argv)
198 curl_multi_cleanup (multi); 199 curl_multi_cleanup (multi);
199 curl_easy_cleanup (c); 200 curl_easy_cleanup (c);
200 MHD_stop_daemon (d); 201 MHD_stop_daemon (d);
201 return 3; 202 return 99;
202 } 203 }
203 } 204 }
204 if (MHD_YES != 205 if (MHD_YES !=
@@ -231,22 +232,33 @@ main (int argc, char **argv)
231 curl_multi_perform (multi, &running); 232 curl_multi_perform (multi, &running);
232 if (running == 0) 233 if (running == 0)
233 { 234 {
234 msg = curl_multi_info_read (multi, &running); 235 int pending;
235 if (msg == NULL) 236 int curl_fine = 0;
236 break; 237 while (NULL != (msg = curl_multi_info_read (multi, &pending)))
237 if (msg->msg == CURLMSG_DONE)
238 { 238 {
239 if (msg->data.result != CURLE_OK) 239 if (msg->msg != CURLMSG_DONE)
240 printf ("%s failed at %s:%d: `%s'\n", 240 {
241 "curl_multi_perform", 241 if (msg->data.result != CURLE_OK)
242 __FILE__, 242 fprintf (stderr,
243 __LINE__, curl_easy_strerror (msg->data.result)); 243 "%s failed at %s:%d: `%s'\n",
244 curl_multi_remove_handle (multi, c); 244 "curl_multi_perform",
245 curl_multi_cleanup (multi); 245 __FILE__,
246 curl_easy_cleanup (c); 246 __LINE__, curl_easy_strerror (msg->data.result));
247 c = NULL; 247 abort ();
248 multi = NULL; 248 }
249 else
250 curl_fine = 1;
249 } 251 }
252 if (! curl_fine)
253 {
254 fprintf (stderr, "libcurl haven't returned OK code\n");
255 abort ();
256 }
257 curl_multi_remove_handle (multi, c);
258 curl_multi_cleanup (multi);
259 curl_easy_cleanup (c);
260 c = NULL;
261 multi = NULL;
250 } 262 }
251 } 263 }
252 MHD_run (d); 264 MHD_run (d);