From: Michel Normand Date: Wed, 7 Oct 2009 14:06:08 +0000 (+0200) Subject: ttyclient_handler is only cleanup on disconnect X-Git-Tag: lxc_0_6_4~89 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35be16d7cc331631174e422fd332e1c8902e464a;p=thirdparty%2Flxc.git ttyclient_handler is only cleanup on disconnect this is only a code split to show the real functionality of this function that is not expecting any received data on the connection Signed-off-by: Michel Normand Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/start.c b/src/lxc/start.c index 8a24c554d..05020e0c8 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -175,23 +175,35 @@ static int sigchld_handler(int fd, void *data, return 1; } -static int ttyclient_handler(int fd, void *data, - struct lxc_epoll_descr *descr) +static void ttyinfo_remove_fd(int fd, struct lxc_tty_info *tty_info) { int i; - struct lxc_tty_info *tty_info = data; for (i = 0; i < tty_info->nbtty; i++) { if (tty_info->pty_info[i].busy != fd) continue; - lxc_mainloop_del_handler(descr, fd); tty_info->pty_info[i].busy = 0; - close(fd); } - return 0; + return; +} + +static void command_fd_cleanup(int fd, struct lxc_tty_info *tty_info, + struct lxc_epoll_descr *descr) +{ + ttyinfo_remove_fd(fd, tty_info); + lxc_mainloop_del_handler(descr, fd); + close(fd); +} + +static int ttyclient_handler(int fd, void *data, + struct lxc_epoll_descr *descr) +{ + struct lxc_tty_info *tty_info = data; + + command_fd_cleanup(fd, tty_info, descr); } static int ttyservice_handler(int fd, void *data,