]> andersk Git - openssh.git/commitdiff
- (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit
authordjm <djm>
Mon, 11 Jun 2007 03:03:16 +0000 (03:03 +0000)
committerdjm <djm>
Mon, 11 Jun 2007 03:03:16 +0000 (03:03 +0000)
   fix; tested by dtucker@ and jochen.kirn AT gmail.com

ChangeLog
channels.c

index b674ed5f28863b847357a9545cbd7bc59f018068..8eabf3a3078f160e2beed8cb8d9fb5c23c98b33b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index c68ad6419f854849574baf8f6e1bcaf89b3babf5..bb14450f473f65edb0487758ade279bca920a10f 100644 (file)
@@ -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) {
This page took 0.09243 seconds and 5 git commands to generate.