summaryrefslogtreecommitdiff
path: root/src/connection.c
diff options
context:
space:
mode:
authorPekka Paalanen <ppaalanen@gmail.com>2012-03-21 16:00:23 +0200
committerPekka Paalanen <ppaalanen@gmail.com>2012-04-25 09:37:42 +0300
commit35d5053c622a2b1502b71230c7755a8005b36301 (patch)
tree7a280d1ebdeb1acb28999ff492db342248fdbdf6 /src/connection.c
parent2ccaf918ab4d5185066b84d4dd6050fa76afdd9e (diff)
os: wrap recvmsg(MSG_CMSG_CLOEXEC)
Some system C libraries do not have MSG_CMSG_CLOEXEC. This flag would automatically set O_CLOEXEC flag on any received file descriptors. Provide a fallback that does it manually. If setting CLOEXEC fails, the file descriptor is closed immediately, which will lead to failures but avoid leaks. However, setting CLOEXEC is not really expected to fail occasionally. Add tests for the wrapper. The setup is copied from connection-test.c. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Diffstat (limited to 'src/connection.c')
-rw-r--r--src/connection.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/connection.c b/src/connection.c
index c49ca3d..06cc66f 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -307,7 +307,7 @@ wl_connection_data(struct wl_connection *connection, uint32_t mask)
msg.msg_flags = 0;
do {
- len = recvmsg(connection->fd, &msg, MSG_CMSG_CLOEXEC);
+ len = wl_os_recvmsg_cloexec(connection->fd, &msg, 0);
} while (len < 0 && errno == EINTR);
if (len < 0) {