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:
03fae01
)
dbus: fix unclean shut-down
author
Lennart Poettering
<lennart@poettering.net>
Sun, 4 Jul 2010 19:17:40 +0000
(21:17 +0200)
committer
Lennart Poettering
<lennart@poettering.net>
Sun, 4 Jul 2010 19:17:40 +0000
(21:17 +0200)
src/dbus.c
patch
|
blob
|
history
diff --git
a/src/dbus.c
b/src/dbus.c
index 405ea46cda74460f51528bed687855479dadf516..385bf6a93720b2ef737a5e62d4c2bebfe898b438 100644
(file)
--- a/
src/dbus.c
+++ b/
src/dbus.c
@@
-967,7
+967,10
@@
int bus_init(Manager *m) {
return 0;
}
return 0;
}
-static void shutdown_connection(DBusConnection *c) {
+static void shutdown_connection(Manager *m, DBusConnection *c) {
+ set_remove(m->bus_connections, c);
+ set_remove(m->bus_connections_for_dispatch, c);
+
dbus_connection_set_dispatch_status_function(c, NULL, NULL, NULL);
dbus_connection_flush(c);
dbus_connection_close(c);
dbus_connection_set_dispatch_status_function(c, NULL, NULL, NULL);
dbus_connection_flush(c);
dbus_connection_close(c);
@@
-981,8
+984,7
@@
static void bus_done_api(Manager *m) {
if (m->system_bus == m->api_bus)
m->system_bus = NULL;
if (m->system_bus == m->api_bus)
m->system_bus = NULL;
- set_remove(m->bus_connections, m->api_bus);
- shutdown_connection(m->api_bus);
+ shutdown_connection(m, m->api_bus);
m->api_bus = NULL;
}
m->api_bus = NULL;
}
@@
-1009,8
+1011,7
@@
static void bus_done_system(Manager *m) {
bus_done_api(m);
if (m->system_bus) {
bus_done_api(m);
if (m->system_bus) {
- set_remove(m->bus_connections, m->system_bus);
- shutdown_connection(m->system_bus);
+ shutdown_connection(m, m->system_bus);
m->system_bus = NULL;
}
}
m->system_bus = NULL;
}
}
@@
-1032,10
+1033,10
@@
void bus_done(Manager *m) {
bus_done_private(m);
while ((c = set_steal_first(m->bus_connections)))
bus_done_private(m);
while ((c = set_steal_first(m->bus_connections)))
- shutdown_connection(c);
+ shutdown_connection(
m,
c);
while ((c = set_steal_first(m->bus_connections_for_dispatch)))
while ((c = set_steal_first(m->bus_connections_for_dispatch)))
- shutdown_connection(c);
+ shutdown_connection(
m,
c);
set_free(m->bus_connections);
set_free(m->bus_connections_for_dispatch);
set_free(m->bus_connections);
set_free(m->bus_connections_for_dispatch);