From 163277c0e7edb64b599131b143ae29817dc81d68 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 25 Apr 2012 15:21:53 +0000 Subject: [PATCH] -fixes --- src/util/server.c | 15 ++++++++------- src/util/service.c | 15 +++++++++++++-- src/util/test_service.c | 9 ++++++--- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/util/server.c b/src/util/server.c index a730a5481..568380d5d 100644 --- a/src/util/server.c +++ b/src/util/server.c @@ -554,13 +554,14 @@ GNUNET_SERVER_create (GNUNET_CONNECTION_AccessCheck access, void *access_cls, while (NULL != serverAddr[i]) { seen = 0; - for (k=0;k 0) + for (k=0;kserver; + service->shutdown_task = GNUNET_SCHEDULER_NO_TASK; if (0 != (service->options & GNUNET_SERVICE_OPTION_SOFT_SHUTDOWN)) GNUNET_SERVER_stop_listening (server); else @@ -1501,8 +1507,8 @@ service_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { /* install a task that will kill the server * process if the scheduler ever gets a shutdown signal */ - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, - sctx); + sctx->shutdown_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, + sctx); } sctx->my_handlers = GNUNET_malloc (sizeof (defhandlers)); memcpy (sctx->my_handlers, defhandlers, sizeof (defhandlers)); @@ -1876,6 +1882,11 @@ GNUNET_SERVICE_stop (struct GNUNET_SERVICE_Context *sctx) { unsigned int i; + if (GNUNET_SCHEDULER_NO_TASK != sctx->shutdown_task) + { + GNUNET_SCHEDULER_cancel (sctx->shutdown_task); + sctx->shutdown_task = GNUNET_SCHEDULER_NO_TASK; + } if (NULL != sctx->server) GNUNET_SERVER_destroy (sctx->server); GNUNET_free_non_null (sctx->my_handlers); diff --git a/src/util/test_service.c b/src/util/test_service.c index f64503ea5..9b43f924d 100644 --- a/src/util/test_service.c +++ b/src/util/test_service.c @@ -31,7 +31,7 @@ #include "gnunet_time_lib.h" -#define VERBOSE GNUNET_NO +#define VERBOSE GNUNET_YES #define PORT 12435 @@ -59,6 +59,10 @@ do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) GNUNET_SERVICE_stop (sctx); sctx = NULL; } + else + { + GNUNET_SCHEDULER_shutdown (); + } } @@ -70,6 +74,7 @@ build_msg (void *cls, size_t size, void *buf) if (size < sizeof (struct GNUNET_MessageHeader)) { /* timeout */ + GNUNET_break (0); GNUNET_SCHEDULER_add_now (&do_stop, NULL); ok = 1; return 0; @@ -273,7 +278,6 @@ main (int argc, char *argv[]) NULL); ret += check (); ret += check (); - // FIXME #ifndef MINGW s = GNUNET_NETWORK_socket_create (PF_INET6, SOCK_STREAM, 0); @@ -296,7 +300,6 @@ main (int argc, char *argv[]) ret += check6 (); } ret += check_start_stop (); - return ret; } -- 2.25.1