diff options
author | Daniel Mack <daniel@zonque.org> | 2015-08-05 15:58:39 +0200 |
---|---|---|
committer | Daniel Mack <daniel@zonque.org> | 2015-08-05 17:06:45 +0200 |
commit | 3cde9e8fa0ae2a424ae2e6e27e14668ca5d90c98 (patch) | |
tree | d8320bbaeec3fae3b838278f4c764f185eabe7c9 /src/login/logind-dbus.c | |
parent | 652f0e397fab33e325f4119dceece9f334f549cf (diff) |
logind: switch to sd_bus_track helper
Let logind use the sd_bus_track helper object to track the controllers of
sessions. This does not only remove quite some code but also kills the
unconditional matches for all NameOwnerChanged signals.
The latter is something we should never ever do, as it wakes up the daemon
every time a client connects, which doesn't scale.
Diffstat (limited to 'src/login/logind-dbus.c')
-rw-r--r-- | src/login/logind-dbus.c | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index b0cd85e985..1647bb293a 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -2652,41 +2652,6 @@ int match_reloading(sd_bus_message *message, void *userdata, sd_bus_error *error return 0; } -int match_name_owner_changed(sd_bus_message *message, void *userdata, sd_bus_error *error) { - const char *name, *old, *new; - Manager *m = userdata; - Session *session; - Iterator i; - int r; - char *key; - - assert(message); - assert(m); - - r = sd_bus_message_read(message, "sss", &name, &old, &new); - if (r < 0) { - bus_log_parse_error(r); - return r; - } - - if (isempty(old) || !isempty(new)) - return 0; - - key = set_remove(m->busnames, (char*) old); - if (!key) - return 0; - - /* Drop all controllers owned by this name */ - - free(key); - - HASHMAP_FOREACH(session, m->sessions, i) - if (session_is_controller(session, old)) - session_drop_controller(session); - - return 0; -} - int manager_send_changed(Manager *manager, const char *property, ...) { char **l; |