chiark / gitweb /
systemctl: subscribe to changes of existing units/jobs
[elogind.git] / src / dbus-unit.c
index e3e1be12ade2be09393e0198ca85ac57eda43096..ba428a8d5c707515769ab0318e7ff07735cbf30e 100644 (file)
@@ -281,6 +281,9 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusMessage *message
                 int r;
                 char *path;
 
+                if (job_type == JOB_START && u->meta.only_by_dependency)
+                        return bus_send_error_reply(m, message, NULL, -EPERM);
+
                 if (!dbus_message_get_args(
                                     message,
                                     &error,
@@ -418,9 +421,12 @@ void bus_unit_send_removed_signal(Unit *u) {
 
         assert(u);
 
-        if (set_isempty(u->meta.manager->subscribed) || !u->meta.sent_dbus_new_signal)
+        if (set_isempty(u->meta.manager->subscribed))
                 return;
 
+        if (!u->meta.sent_dbus_new_signal)
+                bus_unit_send_change_signal(u);
+
         if (!(p = unit_dbus_path(u)))
                 goto oom;