If we don't add the unit to the cleanup queue after it has been
stopped, no UnitRemoved will be sent. Since this signal is only sent
when we free a unit. So we need to add it to the cleanup queue if we
manage to stop it.
---
 src/core/unit.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/core/unit.c b/src/core/unit.c
index 0e9329f..c91c12f 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1171,6 +1171,7 @@ bool unit_can_isolate(Unit *u) {
 int unit_stop(Unit *u) {
         UnitActiveState state;
         Unit *following;
+        int ret;
 
         assert(u);
 
@@ -1192,7 +1193,11 @@ int unit_stop(Unit *u) {
 
         unit_add_to_dbus_queue(u);
 
-        return UNIT_VTABLE(u)->stop(u);
+        ret = UNIT_VTABLE(u)->stop(u);
+        if (ret == 0)
+                unit_add_to_cleanup_queue(u);
+
+        return ret;
 }
 
 /* Errors:
-- 
1.8.3.4

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to