diff options
author | Michal Schmidt <mschmidt@redhat.com> | 2011-12-03 21:34:34 +0100 |
---|---|---|
committer | Michal Schmidt <mschmidt@redhat.com> | 2011-12-03 23:10:12 +0100 |
commit | 2096e009a790073a934f5cd07d17024d3b199d0b (patch) | |
tree | 8a8ed615a78ceb79b4c22cff9495203a1146bb42 /src/service.c | |
parent | 3a11183858af30bc9b4e9dac430dd7541deec19b (diff) |
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 "-".
Diffstat (limited to 'src/service.c')
-rw-r--r-- | src/service.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/service.c b/src/service.c index 07137d265d..5243e690df 100644 --- a/src/service.c +++ b/src/service.c @@ -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; |