[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-twister] branch master updated: Undo 9dc679300003ee9
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-twister] branch master updated: Undo 9dc679300003ee9.. |
Date: |
Tue, 05 Jun 2018 10:48:04 +0200 |
This is an automated email from the git hooks/post-receive script.
marcello pushed a commit to branch master
in repository twister.
The following commit(s) were added to refs/heads/master by this push:
new 15ea1c1 Undo 9dc679300003ee9..
15ea1c1 is described below
commit 15ea1c1ddbbcdf2b780c612bb49edbc8ccc42dcb
Author: Marcello Stanisci <address@hidden>
AuthorDate: Tue Jun 5 10:39:36 2018 +0200
Undo 9dc679300003ee9..
It is never good to make the Twister block using
a function that does not belong to the GNUnet
scheduler.
This way, the scheduler would ignore all signals
and requests from Twister clients, and possibly
behave unexpectedly in other contexts.
---
src/twister/taler-twister-service.c | 78 +++++++++++++++++++++++++++++++------
1 file changed, 67 insertions(+), 11 deletions(-)
diff --git a/src/twister/taler-twister-service.c
b/src/twister/taler-twister-service.c
index 065e527..1efbabc 100644
--- a/src/twister/taler-twister-service.c
+++ b/src/twister/taler-twister-service.c
@@ -561,20 +561,76 @@ curl_task_download (void *cls);
static void
curl_download_prepare ()
{
- int numfds;
-
- curl_multi_wait (curl_multi,
- NULL,
- 0,
- 1000, // millisecs.
- &numfds);
+ 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;
- curl_download_task = GNUNET_SCHEDULER_add_now
- (&curl_task_download,
- curl_multi);
+ 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);
+ }
}
-
/**
* Task that is run when we are ready to receive
* more data from curl.
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [taler-twister] branch master updated: Undo 9dc679300003ee9..,
gnunet <=