diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-01-29 14:58:04 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-01-29 17:46:47 +0100 |
commit | ac84d1fb5a7293df4f75544eedf148ba0bb4ec21 (patch) | |
tree | eec35601f6ce583520e3a41076023624ed183160 /src/core/socket.c | |
parent | c9cf047362cd8e4530c10bc7c2d6db988452305d (diff) |
core: make sure to always go through both SIGTERM and SIGKILL states of units
Given that we now have KillMode=mixed where SIGTERM might kill a smaller
set than SIGKILL we need to make sure to always go explicitly throught
the SIGKILL state to get the right end result.
Diffstat (limited to 'src/core/socket.c')
-rw-r--r-- | src/core/socket.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/socket.c b/src/core/socket.c index 7eac0eb66d..5f16493bc2 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1344,8 +1344,12 @@ static void socket_enter_signal(Socket *s, SocketState state, SocketResult f) { goto fail; socket_set_state(s, state); - } else if (state == SOCKET_STOP_PRE_SIGTERM || state == SOCKET_STOP_PRE_SIGKILL) + } else if (state == SOCKET_STOP_PRE_SIGTERM) + socket_enter_signal(s, SOCKET_STOP_PRE_SIGKILL, SOCKET_SUCCESS); + else if (state == SOCKET_STOP_PRE_SIGKILL) socket_enter_stop_post(s, SOCKET_SUCCESS); + else if (state == SOCKET_FINAL_SIGTERM) + socket_enter_signal(s, SOCKET_FINAL_SIGKILL, SOCKET_SUCCESS); else socket_enter_dead(s, SOCKET_SUCCESS); |