Unverified Commit a99e7037 by Stéphane Graber Committed by GitHub

Merge pull request #3288 from brauner/2020-03-11/fixes

commands: simplify lxc_cmd_fd_cleanup()
parents 823486c1 ab92468c
...@@ -1322,29 +1322,33 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req, ...@@ -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, static void lxc_cmd_fd_cleanup(int fd, struct lxc_handler *handler,
struct lxc_epoll_descr *descr, const lxc_cmd_t cmd) struct lxc_epoll_descr *descr, const lxc_cmd_t cmd)
{ {
struct lxc_list *cur, *next;
lxc_terminal_free(handler->conf, fd); lxc_terminal_free(handler->conf, fd);
lxc_mainloop_del_handler(descr, fd); lxc_mainloop_del_handler(descr, fd);
if (cmd == LXC_CMD_ADD_STATE_CLIENT) { if (cmd == LXC_CMD_ADD_STATE_CLIENT) {
struct lxc_list *cur, *next;
lxc_list_for_each_safe(cur, &handler->conf->state_clients, next) { lxc_list_for_each_safe(cur, &handler->conf->state_clients, next) {
struct lxc_state_client *client = cur->elem; struct lxc_state_client *client = cur->elem;
if (client->clientfd != fd) if (client->clientfd != fd)
continue; 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); lxc_list_del(cur);
close(client->clientfd);
free(cur->elem); free(cur->elem);
free(cur); free(cur);
/* /*
* No need to walk the whole list. If we found the state * No need to walk the whole list. If we found the state
* client fd there can't be a second one. * client fd there can't be a second one.
*/ */
TRACE("Closed state client fd %d\n", fd); TRACE("Found state client fd %d in state client list", fd);
return; break;
} }
/* /*
...@@ -1353,7 +1357,7 @@ static void lxc_cmd_fd_cleanup(int fd, struct lxc_handler *handler, ...@@ -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 * was already reached by the time we were ready to add it. So
* fallthrough and clean it up. * 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); close(fd);
......
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