summaryrefslogtreecommitdiff
path: root/channels.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 /channels.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 'channels.c')
-rw-r--r--channels.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/channels.c b/channels.c
index 239e9dd83..9642a56ee 100644
--- a/channels.c
+++ b/channels.c
@@ -1422,7 +1422,8 @@ channel_handle_rfd(Channel *c, fd_set *readset, fd_set *writeset)
1422#ifndef PTY_ZEROREAD 1422#ifndef PTY_ZEROREAD
1423 if (len <= 0) { 1423 if (len <= 0) {
1424#else 1424#else
1425 if (len < 0 || (len == 0 && errno != 0)) { 1425 if ((!c->isatty && len <= 0) ||
1426 (c->isatty && (len < 0 || (len == 0 && errno != 0)))) {
1426#endif 1427#endif
1427 debug2("channel %d: read<=0 rfd %d len %d", 1428 debug2("channel %d: read<=0 rfd %d len %d",
1428 c->self, c->rfd, len); 1429 c->self, c->rfd, len);