The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/3288
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
From ab92468c62fe86061cf39aabf7e0ea8c7e983271 Mon Sep 17 00:00:00 2001 From: Christian Brauner <christian.brau...@ubuntu.com> Date: Wed, 11 Mar 2020 03:33:16 +0100 Subject: [PATCH] commands: simplify lxc_cmd_fd_cleanup() Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> --- src/lxc/commands.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 247807c868..1feae25aab 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -1322,29 +1322,33 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req, static void lxc_cmd_fd_cleanup(int fd, struct lxc_handler *handler, struct lxc_epoll_descr *descr, const lxc_cmd_t cmd) { - struct lxc_list *cur, *next; - lxc_terminal_free(handler->conf, fd); lxc_mainloop_del_handler(descr, fd); if (cmd == LXC_CMD_ADD_STATE_CLIENT) { + struct lxc_list *cur, *next; + lxc_list_for_each_safe(cur, &handler->conf->state_clients, next) { struct lxc_state_client *client = cur->elem; if (client->clientfd != fd) continue; - /* kick client from list */ + /* + * Only kick client from list so it can't be found + * anymore. The actual close happens, as for all other + * file descriptors, below. + */ lxc_list_del(cur); - close(client->clientfd); free(cur->elem); free(cur); + /* * No need to walk the whole list. If we found the state * client fd there can't be a second one. */ - TRACE("Closed state client fd %d\n", fd); - return; + TRACE("Found state client fd %d in state client list", fd); + break; } /* @@ -1353,7 +1357,7 @@ static void lxc_cmd_fd_cleanup(int fd, struct lxc_handler *handler, * was already reached by the time we were ready to add it. So * fallthrough and clean it up. */ - TRACE("Closing state client fd %d not present in state client list\n", fd); + TRACE("Closing state client fd %d", fd); } close(fd);
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel