summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2017-02-28 17:55:57 +0100
committerLennart Poettering <lennart@poettering.net>2017-02-28 18:34:58 +0100
commitae572acd62fe80bbcf242e02e4947900682ded16 (patch)
treecf239c99f2cef92634d407edd24caf4278732b15
parent5e806f453d0c66eb954afb7fd16e7635b4ec1ece (diff)
core: always consider clients that pinned a unit to be subscribers
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.
-rw-r--r--src/core/dbus-unit.c4
-rw-r--r--src/core/unit.c1
2 files changed, 3 insertions, 2 deletions
diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c
index f1306a023f..f15bb2196c 100644
--- a/src/core/dbus-unit.c
+++ b/src/core/dbus-unit.c
@@ -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);
}
diff --git a/src/core/unit.c b/src/core/unit.c
index 174dd42819..b091a0999b 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -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;