chiark / gitweb /
service: fix auto-restart handling in service_stop()
authorDavid Ward <david.ward@ll.mit.edu>
Sun, 29 Apr 2012 13:35:48 +0000 (09:35 -0400)
committerLennart Poettering <lennart@poettering.net>
Mon, 21 May 2012 23:55:52 +0000 (01:55 +0200)
commitf0c7b229e1aba12488ffb3ca39f606cc93291f55
treec929cc7c3d0f891083d618a106ba4577ee488b9a
parentfeae8adb848e26110b28a06d1244e02f36cdf382
service: fix auto-restart handling in service_stop()

When service_stop() handles a service in the SERVICE_AUTO_RESTART state,
it calls service_set_state() to transition it to the SERVICE_DEAD state.
However if the service failed, it should transition it to SERVICE_FAILED
instead, which will trigger its OnFailure units. To achieve this, we now
call service_enter_dead() in place of service_set_state(), which will
transition the service to either SERVICE_DEAD or SERVICE_FAILED as is
appropriate.

Also, some misleading comments are adjusted: service_stop() is not only
called on a user request, but also during an automatic restart in order
to handle dependencies.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=45511
src/core/service.c