aboutsummaryrefslogtreecommitdiff
path: root/src/arm
diff options
context:
space:
mode:
authorBart Polot <bart@net.in.tum.de>2013-04-17 15:32:31 +0000
committerBart Polot <bart@net.in.tum.de>2013-04-17 15:32:31 +0000
commitee4793c79aa9b20b39beb7f970fde336c2cd46a6 (patch)
tree68ad2fa190105ee5db4dad5e1e5d417ab671df74 /src/arm
parent248fd9c86eadcfdbcda670754342ec47954c8648 (diff)
downloadgnunet-ee4793c79aa9b20b39beb7f970fde336c2cd46a6.tar.gz
gnunet-ee4793c79aa9b20b39beb7f970fde336c2cd46a6.zip
Dont restart services/daemons that have exited with exit code 0.
Diffstat (limited to 'src/arm')
-rw-r--r--src/arm/do_start_process.c2
-rw-r--r--src/arm/gnunet-service-arm.c16
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 @@
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include "gnunet_os_lib.h"
22
21/** 23/**
22 * Actually start a process. All of the arguments given to this 24 * Actually start a process. All of the arguments given to this
23 * function are strings that are used for the "argv" array. However, 25 * 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)
1161 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1161 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1162 _("Service `%s' terminated normally, will restart at any time\n"), 1162 _("Service `%s' terminated normally, will restart at any time\n"),
1163 pos->name); 1163 pos->name);
1164 /* process can still be re-started on-demand, ensure it is re-started if there is demand */
1165 for (sli = pos->listen_head; NULL != sli; sli = sli->next)
1166 {
1167 GNUNET_break (GNUNET_SCHEDULER_NO_TASK == sli->accept_task);
1168 sli->accept_task =
1169 GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
1170 sli->listen_socket, &accept_connection, sli);
1171 }
1164 } 1172 }
1165 else 1173 else
1166 { 1174 {
@@ -1172,11 +1180,11 @@ maint_child_death (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
1172 /* schedule restart */ 1180 /* schedule restart */
1173 pos->restart_at = GNUNET_TIME_relative_to_absolute (pos->backoff); 1181 pos->restart_at = GNUNET_TIME_relative_to_absolute (pos->backoff);
1174 pos->backoff = GNUNET_TIME_STD_BACKOFF (pos->backoff); 1182 pos->backoff = GNUNET_TIME_STD_BACKOFF (pos->backoff);
1175 } 1183 if (GNUNET_SCHEDULER_NO_TASK != child_restart_task)
1176 if (GNUNET_SCHEDULER_NO_TASK != child_restart_task) 1184 GNUNET_SCHEDULER_cancel (child_restart_task);
1177 GNUNET_SCHEDULER_cancel (child_restart_task); 1185 child_restart_task = GNUNET_SCHEDULER_add_with_priority (
1178 child_restart_task = GNUNET_SCHEDULER_add_with_priority (
1179 GNUNET_SCHEDULER_PRIORITY_IDLE, &delayed_restart_task, NULL); 1186 GNUNET_SCHEDULER_PRIORITY_IDLE, &delayed_restart_task, NULL);
1187 }
1180 } 1188 }
1181 else 1189 else
1182 { 1190 {