From 99d03dec11e289d9be60a4ad3ea95d7397629a5f Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Thu, 4 Jul 2019 14:25:02 +0200 Subject: [PATCH] file_utils: add lxc_recvmsg_nointr_iov Signed-off-by: Wolfgang Bumiller --- src/lxc/file_utils.c | 18 ++++++++++++++++++ src/lxc/file_utils.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/src/lxc/file_utils.c b/src/lxc/file_utils.c index 31411d712..9cbe6c275 100644 --- a/src/lxc/file_utils.c +++ b/src/lxc/file_utils.c @@ -142,6 +142,24 @@ again: return ret; } +ssize_t lxc_recvmsg_nointr_iov(int sockfd, struct iovec *iov, size_t iovlen, + int flags) +{ + ssize_t ret; + struct msghdr msg; + + memset(&msg, 0, sizeof(msg)); + msg.msg_iov = iov; + msg.msg_iovlen = iovlen; + +again: + ret = recvmsg(sockfd, &msg, flags); + if (ret < 0 && errno == EINTR) + goto again; + + return ret; +} + ssize_t lxc_read_nointr_expect(int fd, void *buf, size_t count, const void *expected_buf) { ssize_t ret; diff --git a/src/lxc/file_utils.h b/src/lxc/file_utils.h index 1b8033d69..a087147e1 100644 --- a/src/lxc/file_utils.h +++ b/src/lxc/file_utils.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -43,6 +44,8 @@ extern ssize_t lxc_read_nointr_expect(int fd, void *buf, size_t count, extern ssize_t lxc_read_file_expect(const char *path, void *buf, size_t count, const void *expected_buf); extern ssize_t lxc_recv_nointr(int sockfd, void *buf, size_t len, int flags); +ssize_t lxc_recvmsg_nointr_iov(int sockfd, struct iovec *iov, size_t iovlen, + int flags); extern bool file_exists(const char *f); extern int print_to_file(const char *file, const char *content); -- 2.47.2