diff options
author | Michal Schmidt <mschmidt@redhat.com> | 2014-10-09 17:27:57 +0200 |
---|---|---|
committer | Michal Schmidt <mschmidt@redhat.com> | 2014-10-09 17:48:01 +0200 |
commit | 6041a7ee2c1bbff6301082f192fc1b0882400d42 (patch) | |
tree | 19de49d076a07a0ee010c4ef51e3c9b8693693f2 /src/core/service.c | |
parent | 384a4be2b00cb95ce215dd343cc9aa77adc9b1ec (diff) |
service: enter SERVICE_STOP_SIGTERM state after getting "STOPPING=1"
SERVICE_STOP would mean we're running the ExecStop command. That's not
the case with "STOPPING=1".
Instead we should enter the same state as if we just told the service
to stop, i.e. SERVICE_STOP_SIGTERM.
This fixes a bug where voluntarily exiting services would hang around in
deactivating state until timeout.
Diffstat (limited to 'src/core/service.c')
-rw-r--r-- | src/core/service.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/core/service.c b/src/core/service.c index 395e0ca8c6..f551061366 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1227,7 +1227,8 @@ static void service_enter_stop_by_notify(Service *s) { if (s->timeout_stop_usec > 0) service_arm_timer(s, s->timeout_stop_usec); - service_set_state(s, SERVICE_STOP); + /* The service told us it's stopping, so it's as if we SIGTERM'd it. */ + service_set_state(s, SERVICE_STOP_SIGTERM); } static void service_enter_stop(Service *s, ServiceResult f) { |