diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-04-30 08:17:37 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-04-30 08:17:37 +0000 |
commit | 95f9076a2139f5fb042b944a0658b6cda2fa35db (patch) | |
tree | b0826a2a1dcf812e6b4450fe6b05d47cd53ae49d /src/gns/gnunet-gns.c | |
parent | 7746f68db77b9ca3c4aaca24ab2ce5253461240b (diff) | |
download | gnunet-95f9076a2139f5fb042b944a0658b6cda2fa35db.tar.gz gnunet-95f9076a2139f5fb042b944a0658b6cda2fa35db.zip |
implementing new scheduler shutdown semantics
Diffstat (limited to 'src/gns/gnunet-gns.c')
-rw-r--r-- | src/gns/gnunet-gns.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/gns/gnunet-gns.c b/src/gns/gnunet-gns.c index c8310db46..62cec54cb 100644 --- a/src/gns/gnunet-gns.c +++ b/src/gns/gnunet-gns.c | |||
@@ -100,6 +100,11 @@ static struct GNUNET_IDENTITY_Handle *identity; | |||
100 | */ | 100 | */ |
101 | static struct GNUNET_IDENTITY_Operation *id_op; | 101 | static struct GNUNET_IDENTITY_Operation *id_op; |
102 | 102 | ||
103 | /** | ||
104 | * Task scheduled to handle timeout. | ||
105 | */ | ||
106 | static struct GNUNET_SCHEDULER_Task *tt; | ||
107 | |||
103 | 108 | ||
104 | /** | 109 | /** |
105 | * Task run on shutdown. Cleans up everything. | 110 | * Task run on shutdown. Cleans up everything. |
@@ -134,6 +139,24 @@ do_shutdown (void *cls) | |||
134 | GNUNET_GNS_disconnect (gns); | 139 | GNUNET_GNS_disconnect (gns); |
135 | gns = NULL; | 140 | gns = NULL; |
136 | } | 141 | } |
142 | if (NULL != tt) | ||
143 | { | ||
144 | GNUNET_SCHEDULER_cancel (tt); | ||
145 | tt = NULL; | ||
146 | } | ||
147 | } | ||
148 | |||
149 | |||
150 | /** | ||
151 | * Task run on timeout. Triggers shutdown. | ||
152 | * | ||
153 | * @param cls unused | ||
154 | */ | ||
155 | static void | ||
156 | do_timeout (void *cls) | ||
157 | { | ||
158 | tt = NULL; | ||
159 | GNUNET_SCHEDULER_shutdown (); | ||
137 | } | 160 | } |
138 | 161 | ||
139 | 162 | ||
@@ -376,7 +399,9 @@ identity_master_cb (void *cls, | |||
376 | * @param c configuration | 399 | * @param c configuration |
377 | */ | 400 | */ |
378 | static void | 401 | static void |
379 | run (void *cls, char *const *args, const char *cfgfile, | 402 | run (void *cls, |
403 | char *const *args, | ||
404 | const char *cfgfile, | ||
380 | const struct GNUNET_CONFIGURATION_Handle *c) | 405 | const struct GNUNET_CONFIGURATION_Handle *c) |
381 | { | 406 | { |
382 | struct GNUNET_CRYPTO_EcdsaPublicKey pkey; | 407 | struct GNUNET_CRYPTO_EcdsaPublicKey pkey; |
@@ -390,8 +415,9 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
390 | _("Failed to connect to GNS\n")); | 415 | _("Failed to connect to GNS\n")); |
391 | return; | 416 | return; |
392 | } | 417 | } |
393 | GNUNET_SCHEDULER_add_delayed (timeout, | 418 | tt = GNUNET_SCHEDULER_add_delayed (timeout, |
394 | &do_shutdown, NULL); | 419 | &do_timeout, NULL); |
420 | GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL); | ||
395 | if (NULL != public_key) | 421 | if (NULL != public_key) |
396 | { | 422 | { |
397 | if (GNUNET_OK != | 423 | if (GNUNET_OK != |