msg.msg_iov = iov;
msg.msg_iovlen = 1;
- if ( (n = recvmsg(fd, &msg, 0)) <= 0) {
- return(n);
+ do {
+ n = recvmsg(fd, &msg, 0);
+ } while ((n == -1) && (errno == EINTR));
+
+ if (n <= 0) {
+ return n;
}
{
size_t bufsize = msghdr_prep_fds(NULL, NULL, 0, &sendfd, 1);
uint8_t buf[bufsize];
struct iovec iov;
+ ssize_t sent;
msghdr_prep_fds(&msg, buf, bufsize, &sendfd, 1);
msg.msg_name = NULL;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
- return (sendmsg(fd, &msg, 0));
+ do {
+ sent = sendmsg(fd, &msg, 0);
+ } while ((sent == -1) && (errno == EINTR));
+
+ return sent;
}
static void aio_child_cleanup(struct tevent_context *event_ctx,