{
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;
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;
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;
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);
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;
}
#include "conf.h"
#include "confile_utils.h"
#include "error.h"
+#include "file_utils.h"
#include "list.h"
#include "lsm/lsm.h"
#include "log.h"
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);