From: Lennart Poettering Date: Thu, 2 Sep 2010 21:26:04 +0000 (+0200) Subject: dbus: make sure to flush bus connection before disconnecting, so that no messages... X-Git-Tag: v9~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5d452f9ceceabf2bf69acb58e69a41fb41011e37;p=thirdparty%2Fsystemd.git dbus: make sure to flush bus connection before disconnecting, so that no messages are lost --- diff --git a/fixme b/fixme index c986d74a9a4..312e0621211 100644 --- a/fixme +++ b/fixme @@ -80,12 +80,8 @@ v9: * fix terminal setup -* figure out ssh disconnect hang - * home.mount failing should not be able to cancel umount.target (IgnoreDependencyFailure=yes borked?) -* disallow further dbus+socket activation on shutdown - External: * place /etc/inittab with explaining blurb. diff --git a/src/cgroups-agent.c b/src/cgroups-agent.c index 6f7a857eaf9..30aeede943d 100644 --- a/src/cgroups-agent.c +++ b/src/cgroups-agent.c @@ -82,6 +82,7 @@ int main(int argc, char *argv[]) { finish: if (bus) { + dbus_connection_flush(bus); dbus_connection_close(bus); dbus_connection_unref(bus); } diff --git a/src/initctl.c b/src/initctl.c index 6c3ec026478..10db2dda188 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -232,8 +232,9 @@ static void server_done(Server *s) { close_nointr_nofail(s->epoll_fd); if (s->bus) { - dbus_connection_close(s->bus); - dbus_connection_unref(s->bus); + dbus_connection_flush(s->bus); + dbus_connection_close(s->bus); + dbus_connection_unref(s->bus); } } diff --git a/src/systemctl.c b/src/systemctl.c index ea09c3cf36d..ecf3e013f2a 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -4624,6 +4624,7 @@ finish: dbus_message_unref(reply); if (bus) { + dbus_connection_flush(bus); dbus_connection_close(bus); dbus_connection_unref(bus); } @@ -5039,6 +5040,7 @@ int main(int argc, char*argv[]) { finish: if (bus) { + dbus_connection_flush(bus); dbus_connection_close(bus); dbus_connection_unref(bus); } diff --git a/src/update-utmp.c b/src/update-utmp.c index e45bee10cee..b06f5a06cb6 100644 --- a/src/update-utmp.c +++ b/src/update-utmp.c @@ -406,8 +406,9 @@ finish: #endif if (c.bus) { - dbus_connection_close(c.bus); - dbus_connection_unref(c.bus); + dbus_connection_flush(c.bus); + dbus_connection_close(c.bus); + dbus_connection_unref(c.bus); } dbus_error_free(&error);