diff options
author | Bart Polot <bart@net.in.tum.de> | 2013-04-17 15:32:31 +0000 |
---|---|---|
committer | Bart Polot <bart@net.in.tum.de> | 2013-04-17 15:32:31 +0000 |
commit | ee4793c79aa9b20b39beb7f970fde336c2cd46a6 (patch) | |
tree | 68ad2fa190105ee5db4dad5e1e5d417ab671df74 /src/arm | |
parent | 248fd9c86eadcfdbcda670754342ec47954c8648 (diff) | |
download | gnunet-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.c | 2 | ||||
-rw-r--r-- | 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 @@ | |||
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 | { |