Hi,
The following code in ptcwrite() in kern/tty_pty.c is supposed to prevent
the tty input buffer overflow (for certain cases):
612 if ((tp->t_rawq.c_cc + tp->t_canq.c_cc) >= TTYHOG - 2 &&
613 (tp->t_canq.c_cc > 0 || !(tp->t_iflag&ICANON))) {
614 wakeup(TSA_HUP_OR_INPUT(tp));
615 goto block;
616 }
But the ICANON flag is set in tp->t_lflag and not tp->t_iflag. The ICRNL flag
in tp->t_iflag has the same value as the ICANON flag in tp->t_lflag (0x100).
This leads to input buffer overflow as soon as the ICRNL bit is set in
tp->t_iflag, and there are more than 1024 characters that telnet/ssh wants
to write to the pty.
I discovered this problem when using libreadline because it changes the
terminal settings every time it is begins/finishes reading a line.
Has anyone else seen a similar problem ? I saw identical behavior on NetBSD
too. Please CC me as I am not on the mailing list.
thanks
Neel
__________________________________________________
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message