=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- src/usr.bin/tmux/server.c 2009/10/11 08:58:05 1.54 +++ src/usr.bin/tmux/server.c 2009/10/11 10:04:27 1.55 @@ -1,4 +1,4 @@ -/* $OpenBSD: server.c,v 1.54 2009/10/11 08:58:05 nicm Exp $ */ +/* $OpenBSD: server.c,v 1.55 2009/10/11 10:04:27 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -572,6 +572,13 @@ if (BUFFER_USED(wp->out) > 0) events |= POLLOUT; server_poll_add(wp->fd, events); + + if (wp->pipe_fd == -1) + continue; + events = 0; + if (BUFFER_USED(wp->pipe_buf) > 0) + events |= POLLOUT; + server_poll_add(wp->pipe_fd, events); } } } @@ -600,6 +607,16 @@ wp->fd = -1; } else server_handle_window(w, wp); + + if (wp->pipe_fd == -1) + continue; + if ((pfd = server_poll_lookup(wp->pipe_fd)) == NULL) + continue; + if (buffer_poll(pfd, NULL, wp->pipe_buf) != 0) { + buffer_destroy(wp->pipe_buf); + close(wp->pipe_fd); + wp->pipe_fd = -1; + } } server_check_window(w);