From dc816d5dcd87a3578e47eade55db80b99b802c62 Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Tue, 13 Jan 2009 20:43:30 -0600 Subject: [PATCH] Allow an onrestart command to stop the current service For example, service recovery /sbin/recovery onrestart start loadkeys onrestart class_start con onrestart stop recovery Previously, if you had a service like the above, the "onrestart stop recovery" clause would not have any effect, because the restart flag would be re-set after the stop command had executed. This is similar to a service with the "oneshot" keyword, with the critical difference being that it executes the other onrestart commands when the service dies. --- init/init.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) mode change 100644 => 100755 init/init.c diff --git a/init/init.c b/init/init.c old mode 100644 new mode 100755 index 896aff890..adc4c9f26 --- a/init/init.c +++ b/init/init.c @@ -389,12 +389,13 @@ static int wait_for_one_process(int block) } } + svc->flags |= SVC_RESTARTING; + /* Execute all onrestart commands for this service. */ list_for_each(node, &svc->onrestart.commands) { cmd = node_to_item(node, struct command, clist); cmd->func(cmd->nargs, cmd->args); } - svc->flags |= SVC_RESTARTING; notify_service_state(svc->name, "restarting"); return 0; }