summaryrefslogtreecommitdiff
path: root/channels.c
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2009-08-28 11:02:37 +1000
committerDarren Tucker <dtucker@zip.com.au>2009-08-28 11:02:37 +1000
commit3980b636312516ee823e84e884dadbc86e6795d3 (patch)
tree9831ee718e444151d57aae8f045db8e4ff04ce76 /channels.c
parent7d4a2685f78440f09d25bf3fc7236a5f99af208a (diff)
downloadopenssh-git-3980b636312516ee823e84e884dadbc86e6795d3.tar.gz
- (dtucker) [channels.c configure.ac] Bug #1528: skip the tcgetattr call on
the pty master on Solaris, since it never succeeds and can hang if large amounts of data is sent to the slave (eg a copy-paste). Based on a patch originally from Doke Scott, ok djm@
Diffstat (limited to 'channels.c')
-rw-r--r--channels.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/channels.c b/channels.c
index efb04d65..e8b8aa07 100644
--- a/channels.c
+++ b/channels.c
@@ -1653,6 +1653,7 @@ channel_handle_wfd(Channel *c, fd_set *readset, fd_set *writeset)
}
return -1;
}
+#ifndef BROKEN_TCGETATTR_ICANON
if (compat20 && c->isatty && dlen >= 1 && buf[0] != '\r') {
if (tcgetattr(c->wfd, &tio) == 0 &&
!(tio.c_lflag & ECHO) && (tio.c_lflag & ICANON)) {
@@ -1666,6 +1667,7 @@ channel_handle_wfd(Channel *c, fd_set *readset, fd_set *writeset)
packet_send();
}
}
+#endif
buffer_consume(&c->output, len);
if (compat20 && len > 0) {
c->local_consumed += len;