]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
terminal: lxc_terminal_master_cb()
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 28 Feb 2018 11:43:47 +0000 (12:43 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Wed, 28 Feb 2018 16:08:09 +0000 (17:08 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/terminal.c

index 7423b70bd724b890d501cc6150906c7508cd5f8a..a801b2669758a7cc8d187a61ce20b10c1be794a6 100644 (file)
@@ -999,9 +999,9 @@ int lxc_terminal_stdin_cb(int fd, uint32_t events, void *cbdata,
 int lxc_terminal_master_cb(int fd, uint32_t events, void *cbdata,
                           struct lxc_epoll_descr *descr)
 {
-       struct lxc_terminal_state *ts = cbdata;
-       char buf[LXC_TERMINAL_BUFFER_SIZE];
        int r, w;
+       char buf[LXC_TERMINAL_BUFFER_SIZE];
+       struct lxc_terminal_state *ts = cbdata;
 
        if (fd != ts->masterfd)
                return LXC_MAINLOOP_CLOSE;
@@ -1011,14 +1011,10 @@ int lxc_terminal_master_cb(int fd, uint32_t events, void *cbdata,
                return LXC_MAINLOOP_CLOSE;
 
        w = lxc_write_nointr(ts->stdoutfd, buf, r);
-       if (w <= 0) {
+       if (w <= 0 || w != r)
                return LXC_MAINLOOP_CLOSE;
-       } else if (w != r) {
-               SYSERROR("Failed to write");
-               return 1;
-       }
 
-       return 0;
+       return LXC_MAINLOOP_CONTINUE;
 }
 
 int lxc_terminal_getfd(struct lxc_container *c, int *ttynum, int *masterfd)