From: Christian Brauner Date: Tue, 23 Feb 2021 15:21:55 +0000 (+0100) Subject: commands: lxc_cmd_add_state_client_callback() X-Git-Tag: lxc-5.0.0~273^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=254a22e17f2ed4b64006beb9f8b17f33d16941a0;p=thirdparty%2Flxc.git commands: lxc_cmd_add_state_client_callback() Signed-off-by: Christian Brauner --- 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); }