From: Christian Brauner Date: Mon, 3 Sep 2018 12:43:06 +0000 (+0200) Subject: file_utils: add lxc_send_nointr() X-Git-Tag: lxc-3.1.0~118^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=28143f8862c3d5e1ed30e7a6bf4593b7725b5d41;p=thirdparty%2Flxc.git file_utils: add lxc_send_nointr() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/file_utils.c b/src/lxc/file_utils.c index 1e87f2a24..3bdde2e3a 100644 --- a/src/lxc/file_utils.c +++ b/src/lxc/file_utils.c @@ -106,6 +106,17 @@ again: return ret; } +ssize_t lxc_send_nointr(int sockfd, void *buf, size_t len, int flags) +{ + ssize_t ret; +again: + ret = send(sockfd, buf, len, flags); + if (ret < 0 && errno == EINTR) + goto again; + + return ret; +} + ssize_t lxc_read_nointr(int fd, void *buf, size_t count) { ssize_t ret; diff --git a/src/lxc/file_utils.h b/src/lxc/file_utils.h index 5172b6d15..7ae286975 100644 --- a/src/lxc/file_utils.h +++ b/src/lxc/file_utils.h @@ -37,6 +37,7 @@ extern int lxc_read_from_file(const char *filename, void *buf, size_t count); /* send and receive buffers completely */ extern ssize_t lxc_write_nointr(int fd, const void *buf, size_t count); +extern ssize_t lxc_send_nointr(int sockfd, void *buf, size_t len, int flags); extern ssize_t lxc_read_nointr(int fd, void *buf, size_t count); extern ssize_t lxc_read_nointr_expect(int fd, void *buf, size_t count, const void *expected_buf);