=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server.c,v retrieving revision 1.54 retrieving revision 1.55 diff -c -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 **** ! /* $OpenBSD: server.c,v 1.54 2009/10/11 08:58:05 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: server.c,v 1.55 2009/10/11 10:04:27 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 572,577 **** --- 572,584 ---- 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,605 **** --- 607,622 ---- 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);