summaryrefslogtreecommitdiff
path: root/src/core/manager.c
diff options
context:
space:
mode:
authorDaniel Mack <daniel@zonque.org>2015-08-05 17:47:45 +0200
committerDaniel Mack <daniel@zonque.org>2015-08-06 10:14:41 +0200
commitbbc2908635ca3ded9162504683fa126809f0ec14 (patch)
treed667bb2afaaef914cbc262e3b6e4220325722bbf /src/core/manager.c
parentd5972272d2b725ab6a2789899f8b6c1d2a8113e3 (diff)
core: dbus: track bus names per unit
Currently, PID1 installs an unfiltered NameOwnerChanged signal match, and dispatches the signals itself. This does not scale, as right now, PID1 wakes up every time a bus client connects. To fix this, install individual matches once they are requested by unit_watch_bus_name(), and remove the watches again through their slot in unit_unwatch_bus_name(). If the bus is not available during unit_watch_bus_name(), just store name in the 'watch_bus' hashmap, and let bus_setup_api() do the installing later.
Diffstat (limited to 'src/core/manager.c')
-rw-r--r--src/core/manager.c18
1 files changed, 0 insertions, 18 deletions
diff --git a/src/core/manager.c b/src/core/manager.c
index ba107d4615..ecea89c377 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -2187,24 +2187,6 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) {
log_error_errno(errno, "Failed to write Plymouth message: %m");
}
-void manager_dispatch_bus_name_owner_changed(
- Manager *m,
- const char *name,
- const char* old_owner,
- const char *new_owner) {
-
- Unit *u;
-
- assert(m);
- assert(name);
-
- u = hashmap_get(m->watch_bus, name);
- if (!u)
- return;
-
- UNIT_VTABLE(u)->bus_name_owner_change(u, name, old_owner, new_owner);
-}
-
int manager_open_serialization(Manager *m, FILE **_f) {
const char *path;
int fd = -1;