From 17ea08626e8cd14cda64a3c67fdcb6fb700a8380 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 19 Apr 2002 02:15:12 +0000 Subject: Fix send and recvfrom. Jeremy. --- source/lib/system.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'source/lib/system.c') diff --git a/source/lib/system.c b/source/lib/system.c index 244f4e8a6f9..d7c266f05a6 100644 --- a/source/lib/system.c +++ b/source/lib/system.c @@ -107,7 +107,7 @@ ssize_t sys_write(int fd, const void *buf, size_t count) A send wrapper that will deal with EINTR. ********************************************************************/ -int sys_send(int s, const void *msg, size_t len, int flags) +ssize_t sys_send(int s, const void *msg, size_t len, int flags) { ssize_t ret; @@ -118,6 +118,21 @@ int sys_send(int s, const void *msg, size_t len, int flags) return ret; } +/******************************************************************* +A recvfrom wrapper that will deal with EINTR. +********************************************************************/ + +ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen) +{ + ssize_t ret; + + do { + errno = 0; + ret = recvfrom(s, buf, len, flags, from, fromlen); + } while (ret == -1 && errno == EINTR); + return ret; +} + /******************************************************************* A stat() wrapper that will deal with 64 bit filesizes. ********************************************************************/ -- cgit