From 923f8d76dc1e14be0d8c969b1661d0279ddd97ba Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 7 Jul 2010 22:28:02 +0200 Subject: [PATCH] dbus: shut down bus connection cleanly and fully when a direct client disconnects --- src/dbus.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/dbus.c b/src/dbus.c index 81721976..0008cfd3 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -71,6 +71,7 @@ static const char *error_to_dbus(int error); static void bus_done_api(Manager *m); static void bus_done_system(Manager *m); static void bus_done_private(Manager *m); +static void shutdown_connection(Manager *m, DBusConnection *c); static void bus_dispatch_status(DBusConnection *bus, DBusDispatchStatus status, void *data) { Manager *m = data; @@ -477,11 +478,8 @@ static DBusHandlerResult private_bus_message_filter(DBusConnection *connection, dbus_message_get_member(message), dbus_message_get_path(message)); - if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) { - set_remove(m->bus_connections, connection); - set_remove(m->bus_connections_for_dispatch, connection); - dbus_connection_unref(connection); - } + if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected")) + shutdown_connection(m, connection); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } -- 2.39.5