X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fdbus.c;h=0008cfd303a933ed24b0bc6a5153f6ec4a3dd9a1;hp=817219764d7b43788487c99f69d98d39c63bef4b;hb=923f8d76dc1e14be0d8c969b1661d0279ddd97ba;hpb=b3eaa6288107210a84d6d121036fb4b2f7283ee2 diff --git a/src/dbus.c b/src/dbus.c index 817219764..0008cfd30 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; }