service: stop the service if ExecStartPost ends with a failure

The handling of failures in ExecStartPost is inconsistent. If the
command times out, the service is stopped. But if the command exits
with a failure, the service keeps running.

It makes more sense to stop the service when ExecStartPost fails.
If this behaviour is not desired, the ExecStartPost command can be
prefixed with "-".
This commit is contained in:
Michal Schmidt 2011-12-03 21:34:34 +01:00
parent 3a11183858
commit 2096e009a7

View File

@ -2870,20 +2870,22 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
break;
case SERVICE_START_POST:
if (success) {
if (s->pid_file) {
int r = service_load_pid_file(s, true);
if (r < 0) {
r = service_demand_pid_file(s);
if (r < 0 || !cgroup_good(s))
service_enter_stop(s, false);
break;
}
} else
service_search_main_pid(s);
if (!success) {
service_enter_stop(s, false);
break;
}
s->reload_failure = !success;
if (s->pid_file) {
int r = service_load_pid_file(s, true);
if (r < 0) {
r = service_demand_pid_file(s);
if (r < 0 || !cgroup_good(s))
service_enter_stop(s, false);
break;
}
} else
service_search_main_pid(s);
service_enter_running(s, true);
break;