static int send_criu_msg(int socket_fd, CriuResp *msg) { unsigned char *buf; int len; len = criu_resp__get_packed_size(msg); buf = xmalloc(len); if (!buf) return -ENOMEM; if (criu_resp__pack(msg, buf) != len) { pr_perror("Failed packing response"); goto err; } if (write(socket_fd, buf, len) == -1) { pr_perror("Can't send response"); goto err; } xfree(buf); return 0; err: xfree(buf); return -1; }
static int send_criu_msg_with_fd(int socket_fd, CriuResp *msg, int fd) { unsigned char *buf; int len, ret; len = criu_resp__get_packed_size(msg); buf = xmalloc(len); if (!buf) return -ENOMEM; if (criu_resp__pack(msg, buf) != len) { pr_perror("Failed packing response"); goto err; } if (fd >= 0) { ret = send_fds(socket_fd, NULL, 0, &fd, 1, buf, len); } else ret = write(socket_fd, buf, len); if (ret < 0) { pr_perror("Can't send response"); goto err; } xfree(buf); return 0; err: xfree(buf); return -1; }
static int send_criu_msg(int socket_fd, CriuResp *msg) { unsigned char buf[CR_MAX_MSG_SIZE]; int len; len = criu_resp__get_packed_size(msg); if (criu_resp__pack(msg, buf) != len) { pr_perror("Failed packing response"); return -1; } if (write(socket_fd, buf, len) == -1) { pr_perror("Can't send response"); return -1; } return 0; }