diff options
-rw-r--r-- | src/util/program.c | 5 | ||||
-rw-r--r-- | src/util/service.c | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/util/program.c b/src/util/program.c index 01a8b496a1..5cd129b472 100644 --- a/src/util/program.c +++ b/src/util/program.c @@ -78,6 +78,7 @@ GNUNET_SPEEDUP_start_ (const struct GNUNET_CONFIGURATION_Handle *cfg); int GNUNET_SPEEDUP_stop_ (void); + /** * Initial task called by the scheduler for each * program. Runs the program-specific main task. @@ -86,8 +87,10 @@ static void program_main (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct CommandContext *cc = cls; - GNUNET_SPEEDUP_start_(cc->cfg); + if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) + return; + GNUNET_SPEEDUP_start_(cc->cfg); GNUNET_RESOLVER_connect (cc->cfg); cc->task (cc->task_cls, cc->args, cc->cfgfile, cc->cfg); } diff --git a/src/util/service.c b/src/util/service.c index c6fdc1f8d6..b9050f8309 100644 --- a/src/util/service.c +++ b/src/util/service.c @@ -1504,6 +1504,8 @@ service_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) struct GNUNET_SERVICE_Context *sctx = cls; unsigned int i; + if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) + return; GNUNET_RESOLVER_connect (sctx->cfg); if (NULL != sctx->lsocks) sctx->server = |