twister

HTTP fault injector for testing
Log | Files | Refs | README | LICENSE

commit 9dc679300003ee9cf33d90512f760f0a3599d0ee
parent e01669953d7a8e82a505fca2308e57e971d43c67
Author: Marcello Stanisci <stanisci.m@gmail.com>
Date:   Fri,  1 Jun 2018 10:26:08 +0200

use curl_multi_wait().  Less code needed.

Diffstat:
Msrc/twister/taler-twister-service.c | 79+++++++++++++------------------------------------------------------------------
1 file changed, 13 insertions(+), 66 deletions(-)

diff --git a/src/twister/taler-twister-service.c b/src/twister/taler-twister-service.c @@ -553,73 +553,17 @@ static void curl_download_prepare () { CURLMcode mret; - fd_set rs; - fd_set ws; - fd_set es; - int max; - struct GNUNET_NETWORK_FDSet *grs; - struct GNUNET_NETWORK_FDSet *gws; - long to; - struct GNUNET_TIME_Relative rtime; + int numfds; - if (NULL != curl_download_task) - { - GNUNET_SCHEDULER_cancel (curl_download_task); - curl_download_task = NULL; - } - max = -1; - FD_ZERO (&rs); - FD_ZERO (&ws); - FD_ZERO (&es); - if (CURLM_OK != (mret = curl_multi_fdset (curl_multi, - &rs, - &ws, - &es, - &max))) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "%s failed at %s:%d: `%s'\n", - "curl_multi_fdset", - __FILE__, - __LINE__, - curl_multi_strerror (mret)); - return; - } - to = -1; - GNUNET_break (CURLM_OK == - curl_multi_timeout (curl_multi, - &to)); - if (-1 == to) - rtime = GNUNET_TIME_UNIT_FOREVER_REL; - else - rtime = GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_MILLISECONDS, to); - if (-1 != max) - { - grs = GNUNET_NETWORK_fdset_create (); - gws = GNUNET_NETWORK_fdset_create (); - GNUNET_NETWORK_fdset_copy_native (grs, - &rs, - max + 1); - GNUNET_NETWORK_fdset_copy_native (gws, - &ws, - max + 1); - curl_download_task = GNUNET_SCHEDULER_add_select - (GNUNET_SCHEDULER_PRIORITY_DEFAULT, - rtime, - grs, gws, - &curl_task_download, - curl_multi); - GNUNET_NETWORK_fdset_destroy (gws); - GNUNET_NETWORK_fdset_destroy (grs); - } - else - { - curl_download_task = GNUNET_SCHEDULER_add_delayed - (rtime, - &curl_task_download, - curl_multi); - } + mret = curl_multi_wait (curl_multi, + NULL, + 0, + 1000, + &numfds); + + curl_download_task = GNUNET_SCHEDULER_add_now + (&curl_task_download, + curl_multi); } @@ -647,6 +591,8 @@ curl_task_download (void *cls) running = 0; mret = curl_multi_perform (curl_multi, &running); + + while (NULL != (msg = curl_multi_info_read (curl_multi, &msgnum))) { @@ -1356,6 +1302,7 @@ create_response (void *cls, curl_easy_setopt (hr->curl, CURLOPT_WRITEFUNCTION, &curl_download_cb); + curl_easy_setopt (hr->curl, CURLOPT_WRITEDATA, hr);