summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/dbus-connection.c')
-rw-r--r--dbus/dbus-connection.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c
index 134736d2..3611b871 100644
--- a/dbus/dbus-connection.c
+++ b/dbus/dbus-connection.c
@@ -1367,9 +1367,16 @@ dbus_connection_send_message_with_reply_and_block (DBusConnection *connectio
void
dbus_connection_flush (DBusConnection *connection)
{
+ /* We have to specify DBUS_ITERATION_DO_READING here
+ * because otherwise we could have two apps deadlock
+ * if they are both doing a flush(), and the kernel
+ * buffers fill up.
+ */
+
dbus_mutex_lock (connection->mutex);
while (connection->n_outgoing > 0)
_dbus_connection_do_iteration (connection,
+ DBUS_ITERATION_DO_READING |
DBUS_ITERATION_DO_WRITING |
DBUS_ITERATION_BLOCK,
-1);