]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
file_utils: add lxc_recv_nointr()
authorChristian Brauner <christian.brauner@ubuntu.com>
Mon, 3 Sep 2018 00:51:39 +0000 (02:51 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Tue, 4 Sep 2018 08:35:30 +0000 (10:35 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/file_utils.c
src/lxc/file_utils.h

index 63e8322d695ad835107f3d56c96a2b8b046024ce..1e87f2a24134d9e7d0119832aa1dd949591869d8 100644 (file)
@@ -117,6 +117,17 @@ again:
        return ret;
 }
 
+ssize_t lxc_recv_nointr(int sockfd, void *buf, size_t len, int flags)
+{
+       ssize_t ret;
+again:
+       ret = recv(sockfd, buf, len, 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;
index 9467f53ac1feb088c7258888d310b8ba9c76d9fd..5172b6d15ef678d7d9ade8c78c35f278a63ece0d 100644 (file)
@@ -40,6 +40,8 @@ extern ssize_t lxc_write_nointr(int fd, const void *buf, size_t count);
 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);
+extern ssize_t lxc_recv_nointr(int sockfd, void *buf, size_t len, int flags);
+
 extern bool file_exists(const char *f);
 extern int print_to_file(const char *file, const char *content);
 extern int is_dir(const char *path);