From 21c2c5cd8fe1bad7b2dcfb751c39891975679cb9 Mon Sep 17 00:00:00 2001 From: mouring Date: Mon, 22 Jul 2002 15:28:53 +0000 Subject: [PATCH] - (bal) AIX tty data limiting patch fix by leigh@solinno.co.uk --- ChangeLog | 3 +++ channels.c | 5 +++-- channels.h | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0fabd7a5..71056382 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 diff --git a/channels.c b/channels.c index cf6742ae..fe99cdbe 100644 --- a/channels.c +++ b/channels.c @@ -186,6 +186,7 @@ channel_register_fds(Channel *c, int rfd, int wfd, int efd, } else { c->isatty = 0; } + c->wfd_isatty = isatty(c->wfd); /* enable nonblocking mode */ if (nonblock) { @@ -1286,12 +1287,12 @@ channel_handle_wfd(Channel *c, fd_set * readset, fd_set * writeset) 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 dd54114d..bd2e9258 100644 --- a/channels.h +++ b/channels.h @@ -77,6 +77,7 @@ struct Channel { 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 -- 2.45.1