From: Lennart Poettering Date: Sat, 10 Apr 2010 02:42:36 +0000 (+0200) Subject: unit: refuse merging if the unit in question has a job assigned or suchlike X-Git-Tag: 0.git+20100605+dfd8ee-1~188 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=819e213fbfecbb09d8e61a5463d2fbf155fa67f9;p=systemd unit: refuse merging if the unit in question has a job assigned or suchlike --- diff --git a/unit.c b/unit.c index 392be841..fe502dbf 100644 --- a/unit.c +++ b/unit.c @@ -219,6 +219,7 @@ int unit_set_description(Unit *u, const char *description) { void unit_add_to_load_queue(Unit *u) { assert(u); + assert(u->meta.type != _UNIT_TYPE_INVALID); if (u->meta.load_state != UNIT_STUB || u->meta.in_load_queue) return; @@ -239,6 +240,7 @@ void unit_add_to_cleanup_queue(Unit *u) { void unit_add_to_dbus_queue(Unit *u) { assert(u); + assert(u->meta.type != _UNIT_TYPE_INVALID); if (u->meta.load_state == UNIT_STUB || u->meta.in_dbus_queue || set_isempty(u->meta.manager->subscribed)) return; @@ -409,6 +411,12 @@ int unit_merge(Unit *u, Unit *other) { other->meta.load_state != UNIT_FAILED) return -EEXIST; + if (other->meta.job) + return -EEXIST; + + if (unit_active_state(other) != UNIT_INACTIVE) + return -EEXIST; + /* Merge names */ merge_names(u, other);