X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Funit.c;h=a2953a6bcb801abfb5683a4d6c34aac24a08146e;hb=efbac6d29c374696fba8f501b6f080e79584cc94;hp=6f10f51fbd2e2ebdacdd1cdd9b6feb52a0b23de8;hpb=f1dd0c3f9b4a257e81ff9c6a08070c702a0db45a;p=elogind.git diff --git a/src/unit.c b/src/unit.c index 6f10f51fb..a2953a6bc 100644 --- a/src/unit.c +++ b/src/unit.c @@ -1211,7 +1211,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su retroactively_stop_dependencies(u); } - if (ns != os && ns == UNIT_FAILED) { + if (ns != os && ns == UNIT_FAILED && u->meta.manager->n_deserializing <= 0) { log_notice("Unit %s entered failed state.", u->meta.id); unit_trigger_on_failure(u); } @@ -2180,6 +2180,8 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { log_debug("Failed to parse condition result value %s", v); else u->meta.condition_result = b; + + continue; } if ((r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds)) < 0) @@ -2231,7 +2233,7 @@ int unit_coldplug(Unit *u) { return r; if (u->meta.deserialized_job >= 0) { - if ((r = manager_add_job(u->meta.manager, u->meta.deserialized_job, u, JOB_FAIL, false, NULL, NULL)) < 0) + if ((r = manager_add_job(u->meta.manager, u->meta.deserialized_job, u, JOB_IGNORE_DEPENDENCIES, false, NULL, NULL)) < 0) return r; u->meta.deserialized_job = _JOB_TYPE_INVALID;