]> andersk Git - openssh.git/blobdiff - channels.c
- (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit
[openssh.git] / channels.c
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.032747 seconds and 4 git commands to generate.