]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
commands: cleanup macros lxc_cmd()
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 17 Feb 2019 13:36:52 +0000 (14:36 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 18 Feb 2019 14:24:13 +0000 (15:24 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/commands.c

index bf17d739eda0da2069c6fcffd870385765d0eb7b..686dee0e45db2cfc52785f6f4650e84ccda2fa4d 100644 (file)
@@ -278,7 +278,7 @@ static int lxc_cmd_send(const char *name, struct lxc_cmd_rr *cmd,
 static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
                   const char *lxcpath, const char *hashed_sock_name)
 {
-       int client_fd, saved_errno;
+       __do_close_prot_errno int client_fd = -EBADF;
        int ret = -1;
        bool stay_connected = false;
 
@@ -303,15 +303,8 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
        if (ret < 0 && errno == ECONNRESET)
                *stopped = 1;
 
-       if (!stay_connected || ret <= 0) {
-               saved_errno = errno;
-               close(client_fd);
-               errno = saved_errno;
-               return ret;
-       }
-
-       if (stay_connected)
-               cmd->rsp.ret = client_fd;
+       if (stay_connected && ret > 0)
+               cmd->rsp.ret = steal_fd(client_fd);
 
        return ret;
 }