diff options
author | Damien Miller <djm@mindrot.org> | 2007-06-11 13:03:16 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2007-06-11 13:03:16 +1000 |
commit | 835284b74c984600aa50ebac527c37238027b4da (patch) | |
tree | b10f9bca25aba416b31d332c55ef1c64608d8b76 | |
parent | 66177929aef3f13e0c2c8ce4430af1252ad7b66b (diff) |
- (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit
fix; tested by dtucker@ and jochen.kirn AT gmail.com
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | channels.c | 9 |
2 files changed, 9 insertions, 6 deletions
@@ -1,3 +1,7 @@ +20070611 + - (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit + fix; tested by dtucker@ and jochen.kirn AT gmail.com + 20070605 - (dtucker) OpenBSD CVS Sync - djm@cvs.openbsd.org 2007/05/22 10:18:52 @@ -2972,4 +2976,4 @@ OpenServer 6 and add osr5bigcrypt support so when someone migrates passwords between UnixWare and OpenServer they will still work. OK dtucker@ -$Id: ChangeLog,v 1.4679 2007/06/05 10:01:16 dtucker Exp $ +$Id: ChangeLog,v 1.4680 2007/06/11 03:03:16 djm Exp $ @@ -1446,14 +1446,13 @@ static int channel_handle_rfd(Channel *c, fd_set *readset, fd_set *writeset) { char buf[CHAN_RBUF]; - int len; + int len, force; - if (c->rfd != -1 && - (c->detach_close || FD_ISSET(c->rfd, readset))) { + force = c->isatty && c->detach_close && c->istate != CHAN_INPUT_CLOSED; + if (c->rfd != -1 && (force || FD_ISSET(c->rfd, readset))) { errno = 0; len = read(c->rfd, buf, sizeof(buf)); - if (len < 0 && (errno == EINTR || - (errno == EAGAIN && !(c->isatty && c->detach_close)))) + if (len < 0 && (errno == EINTR || (errno == EAGAIN && !force))) return 1; #ifndef PTY_ZEROREAD if (len <= 0) { |