- (dtucker) [channels.c serverloop.c] Apply the bug #1102 workaround to ptys
only, otherwise sshd can hang exiting non-interactive sessions.
diff --git a/serverloop.c b/serverloop.c
index e370f63..18f1a10 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -394,7 +394,8 @@
#ifndef PTY_ZEROREAD
} else if (len <= 0) {
#else
- } else if (len < 0 || (len == 0 && errno != 0)) {
+ } else if ((!isatty(fdout) && len <= 0) ||
+ (isatty(fdout) && (len < 0 || (len == 0 && errno != 0)))) {
#endif
fdout_eof = 1;
} else {
@@ -411,7 +412,8 @@
#ifndef PTY_ZEROREAD
} else if (len <= 0) {
#else
- } else if (len < 0 || (len == 0 && errno != 0)) {
+ } else if ((!isatty(fderr) && len <= 0) ||
+ (isatty(fderr) && (len < 0 || (len == 0 && errno != 0)))) {
#endif
fderr_eof = 1;
} else {