aboutsummaryrefslogtreecommitdiff
path: root/src/gns/gnunet-gns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gns/gnunet-gns.c')
-rw-r--r--src/gns/gnunet-gns.c32
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 */
101static struct GNUNET_IDENTITY_Operation *id_op; 101static struct GNUNET_IDENTITY_Operation *id_op;
102 102
103/**
104 * Task scheduled to handle timeout.
105 */
106static 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 */
155static void
156do_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 */
378static void 401static void
379run (void *cls, char *const *args, const char *cfgfile, 402run (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 !=