From 254a22e17f2ed4b64006beb9f8b17f33d16941a0 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Tue, 23 Feb 2021 16:21:55 +0100 Subject: [PATCH] commands: lxc_cmd_add_state_client_callback() Signed-off-by: Christian Brauner --- src/lxc/commands.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 11816b34c..bb81aa112 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -266,6 +266,17 @@ static inline int lxc_cmd_rsp_send_reap(int fd, struct lxc_cmd_rsp *rsp) return LXC_CMD_REAP_CLIENT_FD; } +static inline int lxc_cmd_rsp_send_keep(int fd, struct lxc_cmd_rsp *rsp) +{ + int ret; + + ret = __lxc_cmd_rsp_send(fd, rsp); + if (ret < 0) + return ret; + + return 0; +} + static inline int rsp_one_fd(int fd, int fd_send, struct lxc_cmd_rsp *rsp) { int ret; @@ -1225,21 +1236,23 @@ static int lxc_cmd_add_state_client_callback(__owns int fd, struct lxc_cmd_req * }; if (req->datalen < 0) - goto out; + goto reap_fd; if (req->datalen != (sizeof(lxc_state_t) * MAX_STATE)) - goto out; + goto reap_fd; if (!req->data) - goto out; + goto reap_fd; rsp.ret = lxc_add_state_client(fd, handler, (lxc_state_t *)req->data); if (rsp.ret < 0) - goto out; + goto reap_fd; rsp.data = INT_TO_PTR(rsp.ret); -out: + return lxc_cmd_rsp_send_keep(fd, &rsp); + +reap_fd: return lxc_cmd_rsp_send_reap(fd, &rsp); } -- 2.47.2