e43452d
From 8787a5577aef2703a1484a57db4fe3afb196fc73 Mon Sep 17 00:00:00 2001
e43452d
From: Michal Schmidt <mschmidt@redhat.com>
e43452d
Date: Mon, 19 Dec 2011 18:32:10 +0100
f1996ec
Subject: [PATCH] dbus: no sync D-Bus connection flushing
e43452d
e43452d
Blocking on D-Bus in a system manager could lead to deadlock.
e43452d
(cherry picked from commit 9721b19968dd80ad187d03da214a2a8d28ead3ad)
e43452d
---
e43452d
 src/dbus.c |    4 +++-
e43452d
 1 files changed, 3 insertions(+), 1 deletions(-)
e43452d
e43452d
diff --git a/src/dbus.c b/src/dbus.c
e43452d
index 81b4f53..f9250f1 100644
e43452d
--- a/src/dbus.c
e43452d
+++ b/src/dbus.c
e43452d
@@ -1196,7 +1196,9 @@ static void shutdown_connection(Manager *m, DBusConnection *c) {
e43452d
         }
e43452d
 
e43452d
         dbus_connection_set_dispatch_status_function(c, NULL, NULL, NULL);
e43452d
-        dbus_connection_flush(c);
e43452d
+        /* system manager cannot afford to block on DBus */
e43452d
+        if (m->running_as != MANAGER_SYSTEM)
e43452d
+                dbus_connection_flush(c);
e43452d
         dbus_connection_close(c);
e43452d
         dbus_connection_unref(c);
e43452d
 }
e43452d
-- 
e43452d
1.7.7.5
e43452d