aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-10-10 22:07:30 +0200
committerLennart Poettering <lennart@poettering.net>2016-10-10 22:57:01 +0200
commit1f0958f640b87175cd547c1e69084cfe54a22e9d (patch)
treee1a49f2a31920394f951f3d14f0e7e06125faab5 /src/core/swap.c
parentcore: lower exit status "level" at one place (diff)
downloadsystemd-1f0958f640b87175cd547c1e69084cfe54a22e9d.tar.gz
systemd-1f0958f640b87175cd547c1e69084cfe54a22e9d.tar.bz2
systemd-1f0958f640b87175cd547c1e69084cfe54a22e9d.zip
core: when determining whether a process exit status is clean, consider whether it is a command or a daemon
SIGTERM should be considered a clean exit code for daemons (i.e. long-running processes, as a daemon without SIGTERM handler may be shut down without issues via SIGTERM still) while it should not be considered a clean exit code for commands (i.e. short-running processes). Let's add two different clean checking modes for this, and use the right one at the appropriate places. Fixes: #4275
Diffstat (limited to 'src/core/swap.c')
-rw-r--r--src/core/swap.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/swap.c b/src/core/swap.c
index fb222b685..fee9e7b0e 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -988,7 +988,7 @@ static void swap_sigchld_event(Unit *u, pid_t pid, int code, int status) {
s->control_pid = 0;
- if (is_clean_exit(code, status, NULL))
+ if (is_clean_exit(code, status, EXIT_CLEAN_COMMAND, NULL))
f = SWAP_SUCCESS;
else if (code == CLD_EXITED)
f = SWAP_FAILURE_EXIT_CODE;