summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-04-22 17:30:08 +0200
committerLennart Poettering <lennart@poettering.net>2016-04-22 17:30:08 +0200
commitaea529e5b2c864d536941ee18220abcc1a9015a0 (patch)
treebaac50d737a147e910dc17cae9c9c5b1884ce005 /src/core
parent5bda1f47b3f4b91e55df2f5a773fc83d3e7bf4fd (diff)
core: don't dispatch load queue when setting Slice= for transient units
Let's be more careful when setting up the Slice= property of transient units: let's use manager_load_unit_prepare() instead of manager_load_unit(), so that the load queue isn't dispatched right away, because our own transient unit is in it, and we don#t want to have it loaded until we finished initializing it.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/dbus-unit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c
index c507265070..1f0bc3a386 100644
--- a/src/core/dbus-unit.c
+++ b/src/core/dbus-unit.c
@@ -1099,7 +1099,10 @@ static int bus_unit_set_transient_property(
if (!unit_name_is_valid(s, UNIT_NAME_PLAIN))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid unit name '%s'", s);
- r = manager_load_unit(u->manager, s, NULL, error, &slice);
+ /* Note that we do not dispatch the load queue here yet, as we don't want our own transient unit to be
+ * loaded while we are still setting it up. Or in other words, we use manager_load_unit_prepare()
+ * instead of manager_load_unit() on purpose, here. */
+ r = manager_load_unit_prepare(u->manager, s, NULL, error, &slice);
if (r < 0)
return r;