1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-28 11:55:44 +03:00

unit: if start is called for a non-startable service and it is around, return EALREADY, don't refuse

This commit is contained in:
Lennart Poettering 2010-02-12 02:40:28 +01:00
parent c0dafa4853
commit 7898b0cf7e

17
unit.c
View File

@ -478,13 +478,18 @@ int unit_start(Unit *u) {
assert(u);
if (!UNIT_VTABLE(u)->start)
return -EBADR;
/* If this is already (being) started, then this will
* succeed. Note that this will even succeed if this unit is
* not startable by the user. This is relied on to detect when
* we need to wait for units and when waiting is finished. */
state = unit_active_state(u);
if (UNIT_IS_ACTIVE_OR_RELOADING(state))
return -EALREADY;
/* If it is stopped, but we cannot start it, then fail */
if (!UNIT_VTABLE(u)->start)
return -EBADR;
/* We don't suppress calls to ->start() here when we are
* already starting, to allow this request to be used as a
* "hurry up" call, for example when the unit is in some "auto
@ -511,13 +516,13 @@ int unit_stop(Unit *u) {
assert(u);
if (!UNIT_VTABLE(u)->stop)
return -EBADR;
state = unit_active_state(u);
if (state == UNIT_INACTIVE)
return -EALREADY;
if (!UNIT_VTABLE(u)->stop)
return -EBADR;
if (state == UNIT_DEACTIVATING)
return 0;