From: Lennart Poettering Date: Wed, 7 Jul 2010 20:28:02 +0000 (+0200) Subject: dbus: shut down bus connection cleanly and fully when a direct client disconnects X-Git-Tag: v2~31 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=923f8d76dc1e14be0d8c969b1661d0279ddd97ba;p=systemd dbus: shut down bus connection cleanly and fully when a direct client disconnects --- 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; }