diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-07-13 02:17:53 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-07-13 02:17:53 +0200 |
commit | 7e6e7b06e58af6428aa1ae18ffd26dabed8f3466 (patch) | |
tree | 90ecd2985a66358c6826624b2a0e2aa6ec3162d8 /src | |
parent | ee5f3479e27286574c34056d4dd16b6d8029e817 (diff) |
unit: retroactively start dependencies for job-less units too
Diffstat (limited to 'src')
-rw-r--r-- | src/unit.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/unit.c b/src/unit.c index f786359fac..3f42f0fa11 100644 --- a/src/unit.c +++ b/src/unit.c @@ -949,6 +949,7 @@ static void retroactively_stop_dependencies(Unit *u) { void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns) { dual_timestamp ts; + bool unexpected; assert(u); assert(os < _UNIT_ACTIVE_STATE_MAX); @@ -983,7 +984,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns) { path_unit_notify(u, ns); if (u->meta.job) { - bool unexpected = false; + unexpected = false; if (u->meta.job->state == JOB_WAITING) @@ -1046,12 +1047,14 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns) { * requested by a job, then let's retroactively start * or stop dependencies */ - if (unexpected) { - if (UNIT_IS_INACTIVE_OR_DEACTIVATING(os) && UNIT_IS_ACTIVE_OR_ACTIVATING(ns)) - retroactively_start_dependencies(u); - else if (UNIT_IS_ACTIVE_OR_ACTIVATING(os) && UNIT_IS_INACTIVE_OR_DEACTIVATING(ns)) - retroactively_stop_dependencies(u); - } + } else + unexpected = true; + + if (unexpected) { + if (UNIT_IS_INACTIVE_OR_DEACTIVATING(os) && UNIT_IS_ACTIVE_OR_ACTIVATING(ns)) + retroactively_start_dependencies(u); + else if (UNIT_IS_ACTIVE_OR_ACTIVATING(os) && UNIT_IS_INACTIVE_OR_DEACTIVATING(ns)) + retroactively_stop_dependencies(u); } /* Some names are special */ |