]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: always consider clients that pinned a unit to be subscribers
authorLennart Poettering <lennart@poettering.net>
Tue, 28 Feb 2017 16:55:57 +0000 (17:55 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 28 Feb 2017 17:34:58 +0000 (18:34 +0100)
If a client pins a unit, then it makes sense to also implicitly make it
a subscriber. This is useful for clients that just want to watch one
specific unit: they can pin it and receive its messages.

src/core/dbus-unit.c
src/core/unit.c

index f1306a023f58193954debd2f429046d3dd13bd5e..f15bb2196ccc85e3ea05e877ca39e2813016c6a1 100644 (file)
@@ -1131,7 +1131,7 @@ void bus_unit_send_change_signal(Unit *u) {
         if (!u->id)
                 return;
 
-        r = bus_foreach_bus(u->manager, NULL, u->sent_dbus_new_signal ? send_changed_signal : send_new_signal, u);
+        r = bus_foreach_bus(u->manager, u->bus_track, u->sent_dbus_new_signal ? send_changed_signal : send_new_signal, u);
         if (r < 0)
                 log_unit_debug_errno(u, r, "Failed to send unit change signal for %s: %m", u->id);
 
@@ -1177,7 +1177,7 @@ void bus_unit_send_removed_signal(Unit *u) {
         if (!u->id)
                 return;
 
-        r = bus_foreach_bus(u->manager, NULL, send_removed_signal, u);
+        r = bus_foreach_bus(u->manager, u->bus_track, send_removed_signal, u);
         if (r < 0)
                 log_unit_debug_errno(u, r, "Failed to send unit remove signal for %s: %m", u->id);
 }
index 174dd4281979f143519e902a043d9ffd7e1cc7d3..b091a0999b81bb1c65d53ba4dea01c9daa1f1c56 100644 (file)
@@ -402,6 +402,7 @@ void unit_add_to_dbus_queue(Unit *u) {
 
         /* Shortcut things if nobody cares */
         if (sd_bus_track_count(u->manager->subscribed) <= 0 &&
+            sd_bus_track_count(u->bus_track) <= 0 &&
             set_isempty(u->manager->private_buses)) {
                 u->sent_dbus_new_signal = true;
                 return;