[net.bugs.4bsd] Fix for: rlogin sessions don't handle ^S/^Q in raw mode

gnu@sun.uucp (John Gilmore) (01/23/85)

> When I rlogin to one of our 4.2bsd Vaxs and do a "stty raw", it seems
> that ^S and ^Q don't get picked up on the remote machine.  ...
> Also, rlogin to a 1.2 SUN from a 4.2 Vax does pass ^S/^Q to the remote (the
> SUN), so it seems like a problem with reception rather than transmission
> on the Vax.
> Is this a bug or a feature?  Does anybody have a fix for this?

As you pointed out, we fixed the problem.  It was in the packet pty
driver.  It's supposed to tell the master side of the interface when
the stop/start characters are ^S/^Q or aren't.  When the slave side of
the pty goes into raw mode, it stops having stop/start chars, but the
pty didn't tell the master this, so the rlogind never told the rlogin
on the local machine to stop intercepting flow control.

Here's our fix:
% ssd -r1.5 -r1.6 tty_pty.c
480c480,481
<       { int stop = (tp->t_stopc == ('s'&037) && tp->t_startc == ('q'&037));
---
>       { int stop = ((tp->t_flags & RAW) == 0 &&
>           tp->t_stopc == ('s'&037) && tp->t_startc == ('q'&037));
483c484
<                       pti->pt_send &= TIOCPKT_NOSTOP;
---
>                       pti->pt_send &= ~TIOCPKT_NOSTOP;