From: Christian Brauner Date: Mon, 3 Sep 2018 12:46:13 +0000 (+0200) Subject: tree-wide: s/send()/lxc_send_nointr()/g X-Git-Tag: lxc-3.1.0~118^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fbb15ec9c8762e29bc4e692a4773754aac41756;p=thirdparty%2Flxc.git tree-wide: s/send()/lxc_send_nointr()/g Signed-off-by: Christian Brauner --- diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 741210bb4..b83f1c4c4 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -206,7 +206,8 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp) { ssize_t ret; - ret = send(fd, rsp, sizeof(*rsp), MSG_NOSIGNAL); + errno = EMSGSIZE; + ret = lxc_send_nointr(fd, rsp, sizeof(*rsp), MSG_NOSIGNAL); if (ret < 0 || (size_t)ret != sizeof(*rsp)) { SYSERROR("Failed to send command response %zd", ret); return -1; @@ -215,7 +216,8 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp) if (!rsp->data || rsp->datalen <= 0) return 0; - ret = send(fd, rsp->data, rsp->datalen, MSG_NOSIGNAL); + errno = EMSGSIZE; + ret = lxc_send_nointr(fd, rsp->data, rsp->datalen, MSG_NOSIGNAL); if (ret < 0 || ret != (ssize_t)rsp->datalen) { SYSWARN("Failed to send command response data %zd", ret); return -1; @@ -242,7 +244,9 @@ static int lxc_cmd_send(const char *name, struct lxc_cmd_rr *cmd, if (cmd->req.datalen <= 0) return client_fd; - ret = send(client_fd, cmd->req.data, cmd->req.datalen, MSG_NOSIGNAL); + errno = EMSGSIZE; + ret = lxc_send_nointr(client_fd, (void *)cmd->req.data, + cmd->req.datalen, MSG_NOSIGNAL); if (ret < 0 || ret != (ssize_t)cmd->req.datalen) goto on_error; diff --git a/src/lxc/network.c b/src/lxc/network.c index a2a35baf3..7c9653820 100644 --- a/src/lxc/network.c +++ b/src/lxc/network.c @@ -3057,7 +3057,7 @@ int lxc_network_send_veth_names_to_child(struct lxc_handler *handler) if (netdev->type != LXC_NET_VETH) continue; - ret = send(data_sock, netdev->name, IFNAMSIZ, MSG_NOSIGNAL); + ret = lxc_send_nointr(data_sock, netdev->name, IFNAMSIZ, MSG_NOSIGNAL); if (ret < 0) return -1; TRACE("Sent network device name \"%s\" to child", netdev->name); @@ -3105,14 +3105,14 @@ int lxc_network_send_name_and_ifindex_to_parent(struct lxc_handler *handler) struct lxc_netdev *netdev = iterator->elem; /* Send network device name in the child's namespace to parent. */ - ret = send(data_sock, netdev->name, IFNAMSIZ, MSG_NOSIGNAL); + ret = lxc_send_nointr(data_sock, netdev->name, IFNAMSIZ, MSG_NOSIGNAL); if (ret < 0) return -1; /* Send network device ifindex in the child's namespace to * parent. */ - ret = send(data_sock, &netdev->ifindex, sizeof(netdev->ifindex), MSG_NOSIGNAL); + ret = lxc_send_nointr(data_sock, &netdev->ifindex, sizeof(netdev->ifindex), MSG_NOSIGNAL); if (ret < 0) return -1; } diff --git a/src/lxc/start.c b/src/lxc/start.c index b5c248974..4fe5c8d85 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -61,6 +61,7 @@ #include "conf.h" #include "confile_utils.h" #include "error.h" +#include "file_utils.h" #include "list.h" #include "lsm/lsm.h" #include "log.h" @@ -440,16 +441,9 @@ int lxc_serve_state_clients(const char *name, struct lxc_handler *handler, TRACE("Sending state %s to state client %d", lxc_state2str(state), client->clientfd); - again: - ret = send(client->clientfd, &msg, sizeof(msg), MSG_NOSIGNAL); - if (ret <= 0) { - if (errno == EINTR) { - TRACE("Caught EINTR; retrying"); - goto again; - } - + ret = lxc_send_nointr(client->clientfd, &msg, sizeof(msg), MSG_NOSIGNAL); + if (ret <= 0) SYSERROR("Failed to send message to client"); - } /* kick client from list */ lxc_list_del(cur);