From ee4793c79aa9b20b39beb7f970fde336c2cd46a6 Mon Sep 17 00:00:00 2001 From: Bart Polot Date: Wed, 17 Apr 2013 15:32:31 +0000 Subject: Dont restart services/daemons that have exited with exit code 0. --- src/arm/do_start_process.c | 2 ++ src/arm/gnunet-service-arm.c | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/arm/do_start_process.c b/src/arm/do_start_process.c index b4bb10c6a..95ec74405 100644 --- a/src/arm/do_start_process.c +++ b/src/arm/do_start_process.c @@ -18,6 +18,8 @@ Boston, MA 02111-1307, USA. */ +#include "gnunet_os_lib.h" + /** * Actually start a process. All of the arguments given to this * function are strings that are used for the "argv" array. However, diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c index 0406a96e2..b672503f2 100644 --- a/src/arm/gnunet-service-arm.c +++ b/src/arm/gnunet-service-arm.c @@ -1161,6 +1161,14 @@ maint_child_death (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Service `%s' terminated normally, will restart at any time\n"), pos->name); + /* process can still be re-started on-demand, ensure it is re-started if there is demand */ + for (sli = pos->listen_head; NULL != sli; sli = sli->next) + { + GNUNET_break (GNUNET_SCHEDULER_NO_TASK == sli->accept_task); + sli->accept_task = + GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, + sli->listen_socket, &accept_connection, sli); + } } else { @@ -1172,11 +1180,11 @@ maint_child_death (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) /* schedule restart */ pos->restart_at = GNUNET_TIME_relative_to_absolute (pos->backoff); pos->backoff = GNUNET_TIME_STD_BACKOFF (pos->backoff); - } - if (GNUNET_SCHEDULER_NO_TASK != child_restart_task) - GNUNET_SCHEDULER_cancel (child_restart_task); - child_restart_task = GNUNET_SCHEDULER_add_with_priority ( + if (GNUNET_SCHEDULER_NO_TASK != child_restart_task) + GNUNET_SCHEDULER_cancel (child_restart_task); + child_restart_task = GNUNET_SCHEDULER_add_with_priority ( GNUNET_SCHEDULER_PRIORITY_IDLE, &delayed_restart_task, NULL); + } } else { -- cgit v1.2.3