chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b3eaa62
)
dbus: shut down bus connection cleanly and fully when a direct client disconnects
author
Lennart Poettering
<lennart@poettering.net>
Wed, 7 Jul 2010 20:28:02 +0000
(22:28 +0200)
committer
Lennart Poettering
<lennart@poettering.net>
Wed, 7 Jul 2010 20:28:02 +0000
(22:28 +0200)
src/dbus.c
patch
|
blob
|
history
diff --git
a/src/dbus.c
b/src/dbus.c
index 817219764d7b43788487c99f69d98d39c63bef4b..0008cfd303a933ed24b0bc6a5153f6ec4a3dd9a1 100644
(file)
--- 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 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;
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));
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;
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}