- (bal) AIX tty data limiting patch fix by leigh@solinno.co.uk
diff --git a/ChangeLog b/ChangeLog
index cfe70b2..432d7a8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+20020722
+ - (bal) AIX tty data limiting patch fix by leigh@solinno.co.uk
+
 20020721
  - (stevesk) [auth-pam.c] merge cosmetic changes from solar's
    openssh-3.4p1-owl-password-changing.diff
@@ -1408,4 +1411,4 @@
  - (stevesk) entropy.c: typo in debug message
  - (djm) ssh-keygen -i needs seeded RNG; report from markus@
 
-$Id: ChangeLog,v 1.2386 2002/07/21 23:59:40 stevesk Exp $
+$Id: ChangeLog,v 1.2387 2002/07/22 15:28:53 mouring Exp $
diff --git a/channels.c b/channels.c
index cf6742a..fe99cdb 100644
--- a/channels.c
+++ b/channels.c
@@ -186,6 +186,7 @@
 	} else {
 		c->isatty = 0;
 	}
+	c->wfd_isatty = isatty(c->wfd);
 
 	/* enable nonblocking mode */
 	if (nonblock) {
@@ -1286,12 +1287,12 @@
 	    buffer_len(&c->output) > 0) {
 		data = buffer_ptr(&c->output);
 		dlen = buffer_len(&c->output);
-		len = write(c->wfd, data, dlen);
 #ifdef _AIX
 		/* XXX: Later AIX versions can't push as much data to tty */ 
-		if (compat20 && c->isatty && dlen >= 8*1024)
+		if (compat20 && c->wfd_isatty && dlen > 8*1024)
 			dlen = 8*1024;
 #endif
+		len = write(c->wfd, data, dlen);
 		if (len < 0 && (errno == EINTR || errno == EAGAIN))
 			return 1;
 		if (len <= 0) {
diff --git a/channels.h b/channels.h
index dd54114..bd2e925 100644
--- a/channels.h
+++ b/channels.h
@@ -77,6 +77,7 @@
 	int     efd;		/* extended fd */
 	int     sock;		/* sock fd */
 	int     isatty;		/* rfd is a tty */
+	int     wfd_isatty;	/* wfd is a tty */
 	int     force_drain;	/* force close on iEOF */
 	int     delayed;		/* fdset hack */
 	Buffer  input;		/* data read from socket, to be sent over