summaryrefslogtreecommitdiff
path: root/serverloop.c
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2006-06-25 08:25:25 +1000
committerDarren Tucker <dtucker@zip.com.au>2006-06-25 08:25:25 +1000
commit144e8d60cd3dcfdbf23c6df06617adf28b1235b8 (patch)
treed5f2d0a42de6557c30053d5d44108837266ca2f2 /serverloop.c
parent03890e44cd4814c2a9909febe5130fef722c7f4b (diff)
- (dtucker) [channels.c serverloop.c] Apply the bug #1102 workaround to ptys
only, otherwise sshd can hang exiting non-interactive sessions.
Diffstat (limited to 'serverloop.c')
-rw-r--r--serverloop.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/serverloop.c b/serverloop.c
index e370f63a3..18f1a10bd 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -394,7 +394,8 @@ process_input(fd_set *readset)
394#ifndef PTY_ZEROREAD 394#ifndef PTY_ZEROREAD
395 } else if (len <= 0) { 395 } else if (len <= 0) {
396#else 396#else
397 } else if (len < 0 || (len == 0 && errno != 0)) { 397 } else if ((!isatty(fdout) && len <= 0) ||
398 (isatty(fdout) && (len < 0 || (len == 0 && errno != 0)))) {
398#endif 399#endif
399 fdout_eof = 1; 400 fdout_eof = 1;
400 } else { 401 } else {
@@ -411,7 +412,8 @@ process_input(fd_set *readset)
411#ifndef PTY_ZEROREAD 412#ifndef PTY_ZEROREAD
412 } else if (len <= 0) { 413 } else if (len <= 0) {
413#else 414#else
414 } else if (len < 0 || (len == 0 && errno != 0)) { 415 } else if ((!isatty(fderr) && len <= 0) ||
416 (isatty(fderr) && (len < 0 || (len == 0 && errno != 0)))) {
415#endif 417#endif
416 fderr_eof = 1; 418 fderr_eof = 1;
417 } else { 419 } else {