summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2014-04-24 13:38:28 -0400
committerKeith Packard <keithp@keithp.com>2014-04-30 08:56:32 -0700
commitbcb17b99873f020f2639b860ce99d260def0cd97 (patch)
treecdec5f337c415efff648ffbd5d38093a7349f42a
parent6bd7ad914470322ddd02b50078e159234ebec643 (diff)
dbus: don't dispatch dbus events on select() EINTR
wakeup handlers are called even when select() returns EINTR, and when they're called the passed fd set is undefined. This commit fixes the dbus wakeup handler to avoid dispatching into dbus spuriously. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Ray Strode <rstrode@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--config/dbus-core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/config/dbus-core.c b/config/dbus-core.c
index b0fd92de4..8351ea4b3 100644
--- a/config/dbus-core.c
+++ b/config/dbus-core.c
@@ -48,11 +48,11 @@ static struct dbus_core_info bus_info;
static CARD32 reconnect_timer(OsTimerPtr timer, CARD32 time, void *arg);
static void
-wakeup_handler(void *data, int err, void *read_mask)
+wakeup_handler(void *data, int num_fds, void *read_mask)
{
struct dbus_core_info *info = data;
- if (info->connection && FD_ISSET(info->fd, (fd_set *) read_mask)) {
+ if (info->connection && num_fds > 0 && FD_ISSET(info->fd, (fd_set *) read_mask)) {
do {
dbus_connection_read_write_dispatch(info->connection, 0);
} while (info->connection &&