commands: handle older clients gracefully

parent abe00764
...@@ -502,11 +502,16 @@ static int lxc_cmd_get_init_pid_callback(int fd, struct lxc_cmd_req *req, ...@@ -502,11 +502,16 @@ static int lxc_cmd_get_init_pid_callback(int fd, struct lxc_cmd_req *req,
int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath) int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath)
{ {
int pidfd;
int ret, stopped; int ret, stopped;
struct lxc_cmd_rr cmd = { struct lxc_cmd_rr cmd = {
.req = { .req = {
.cmd = LXC_CMD_GET_INIT_PIDFD, .cmd = LXC_CMD_GET_INIT_PIDFD,
}, },
.rsp = {
.data = INT_TO_PTR(-EBADF),
.ret = ENOSYS,
},
}; };
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
...@@ -514,9 +519,13 @@ int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath) ...@@ -514,9 +519,13 @@ int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath)
return log_debug_errno(-1, errno, "Failed to process init pidfd command"); return log_debug_errno(-1, errno, "Failed to process init pidfd command");
if (cmd.rsp.ret < 0) if (cmd.rsp.ret < 0)
return log_debug_errno(-EBADF, errno, "Failed to receive init pidfd"); return syserrno_set(cmd.rsp.ret, "Failed to receive init pidfd");
return PTR_TO_INT(cmd.rsp.data); pidfd = PTR_TO_INT(cmd.rsp.data);
if (pidfd < 0)
return syserrno_set(pidfd, "Failed to receive init pidfd");
return pidfd;
} }
static int lxc_cmd_get_init_pidfd_callback(int fd, struct lxc_cmd_req *req, static int lxc_cmd_get_init_pidfd_callback(int fd, struct lxc_cmd_req *req,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment