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)
- (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 efb04d655..e8b8aa07e 100644
--- a/channels.c
+++ b/channels.c
@@ -1653,6 +1653,7 @@ channel_handle_wfd(Channel *c, fd_set *readset, fd_set *writeset)
1653 } 1653 }
1654 return -1; 1654 return -1;
1655 } 1655 }
1656#ifndef BROKEN_TCGETATTR_ICANON
1656 if (compat20 && c->isatty && dlen >= 1 && buf[0] != '\r') { 1657 if (compat20 && c->isatty && dlen >= 1 && buf[0] != '\r') {
1657 if (tcgetattr(c->wfd, &tio) == 0 && 1658 if (tcgetattr(c->wfd, &tio) == 0 &&
1658 !(tio.c_lflag & ECHO) && (tio.c_lflag & ICANON)) { 1659 !(tio.c_lflag & ECHO) && (tio.c_lflag & ICANON)) {
@@ -1666,6 +1667,7 @@ channel_handle_wfd(Channel *c, fd_set *readset, fd_set *writeset)
1666 packet_send(); 1667 packet_send();
1667 } 1668 }
1668 } 1669 }
1670#endif
1669 buffer_consume(&c->output, len); 1671 buffer_consume(&c->output, len);
1670 if (compat20 && len > 0) { 1672 if (compat20 && len > 0) {
1671 c->local_consumed += len; 1673 c->local_consumed += len;