summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/dbus-core.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/config/dbus-core.c b/config/dbus-core.c
index b90e413f3..5cc80e32b 100644
--- a/config/dbus-core.c
+++ b/config/dbus-core.c
@@ -51,8 +51,12 @@ wakeup_handler(pointer data, int err, pointer read_mask)
{
struct dbus_core_info *info = data;
- if (info->connection && FD_ISSET(info->fd, (fd_set *) read_mask))
- dbus_connection_read_write_dispatch(info->connection, 0);
+ if (info->connection && FD_ISSET(info->fd, (fd_set *) read_mask)) {
+ do {
+ dbus_connection_read_write_dispatch(info->connection, 0);
+ } while (dbus_connection_get_dispatch_status(info->connection) ==
+ DBUS_DISPATCH_DATA_REMAINS);
+ }
}
static void