From: Christian Grothoff Date: Mon, 12 Apr 2010 11:56:11 +0000 (+0000) Subject: fix shutdown X-Git-Tag: initial-import-from-subversion-38251~22193 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=858d1de8df36bf53e23cd55281025c6458356bc6;p=oweals%2Fgnunet.git fix shutdown --- diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index dfb90ca9c..c2ca8bdb7 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c @@ -1607,8 +1607,10 @@ static void expire_address_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct TransportPlugin *plugin = cls; + plugin->address_update_task = GNUNET_SCHEDULER_NO_TASK; - update_addresses (plugin, GNUNET_NO); + if (0 == (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) + update_addresses (plugin, GNUNET_NO); } @@ -3695,6 +3697,12 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) while (NULL != (plug = plugins)) { plugins = plug->next; + if (plug->address_update_task != GNUNET_SCHEDULER_NO_TASK) + { + GNUNET_SCHEDULER_cancel (plug->env.sched, + plug->address_update_task); + plug->address_update_task = GNUNET_SCHEDULER_NO_TASK; + } GNUNET_break (NULL == GNUNET_PLUGIN_unload (plug->lib_name, plug->api)); GNUNET_free (plug->lib_name); GNUNET_free (plug->short_name);