From 0e36cdd54964c4012acec2bb8e598b85e82d2846 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 10 Jul 2009 21:33:02 -0400 Subject: Bug 896 - Avoid race conditions reading message from exited process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch based on extensive work from Michael Meeks , thanks to Dafydd Harries , Kimmo Hämäläinen and others. The basic idea with this bug is that we effectively ignore errors on write. Only when we're done reading from a connection do we close down a connection. This avoids a race condition where if a process (such as dbus-send) exited while we still had data to read in the buffer, we'd miss that data. --- dbus/dbus-sysdeps.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'dbus/dbus-sysdeps.c') diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c index e0fe8888..ccd80ccd 100644 --- a/dbus/dbus-sysdeps.c +++ b/dbus/dbus-sysdeps.c @@ -1077,6 +1077,16 @@ _dbus_get_is_errno_eintr (void) return errno == EINTR; } +/** + * See if errno is EPIPE + * @returns #TRUE if errno == EPIPE + */ +dbus_bool_t +_dbus_get_is_errno_epipe (void) +{ + return errno == EPIPE; +} + /** * Get error message from errno * @returns _dbus_strerror(errno) -- cgit