Vista problems - partial solution?
Daniel Kirkham - NSS
kirkham at brahma.trl.oz.au
Thu May 31 17:53:02 AEST 1990
In article <7897 at brazos.Rice.edu> paul at popcbr.ROCKEFELLER.EDU (Paul Alukal) writes
> The second (and main) problem is with a VISTA VCP-1000 Terminal Server.
> Looks like the Telnet implementation is not working properly on it. The
> Control characters (like erase character, erase line etc) all gets messed
> up if a remote login is done and many other problems. Did anyone else
> come across these kind of problems on the Vista? Any help would be
> appreciated. Can send mail directly to paul at popcbr.rockefeller.edu
In article <7959 at brazos.Rice.edu> lora at popcbr.ROCKEFELLER.EDU (Lora Frisch) writes:
>There is a bug in Datability's implementation of telnet on their Vista
>terminal server. If you use the Vista to telnet to a Unix host all is
>well, but if you then telnet or rlogin to another Unix system, your
>hotkeys are trashed. For instance, Control-C is used for interrupt, after
>using rlogin to get to a second host, Control-C is now delete. Other hot
>keys are simply missing. We have attempted various stty commands to
>compensate for this to no avail.
>
>Datability has declared this a verified bug, but they are not able to give
>a estimated date when the problem will be fixed.
I have spent some time looking at the problem, and have decided that the
initial part of the problem is with the implementation of in.telnetd.
The explanation:
Unlike the unix hosts, the Vista telnet code translates ^C, Delete, and ^A
into special Telnet escape sequences, as described in RFC854:
NAME CODE HEX MEANING
NOP 241 f1 No operation.
Data Mark 242 f2 The data stream portion of a Synch.
This should always be accompanied
by a TCP Urgent notification.
Break 243 f3 NVT character BRK.
Interrupt Process 244 f4 The function IP.
Abort output 245 f5 The function AO.
Are You There 246 f6 The function AYT.
Erase character 247 f7 The function EC.
Erase Line 248 f8 The function EL.
Go ahead 249 f9 The GA signal.
IAC 255 ff Data Byte 255.
The sequences are usually IAC followed by one of the others.
When these codes are received by in.telnetd, it must translate them into
the equivalent indication to the process on the slave (tty) side of a
pty/tty pair.
In.telnetd does this in two ways. It will usually find the current
settings of the processes erase and intr characters with an ioctl(2) call
to the pty device. The contents seem to mirror the corresponding tty
device.
If the program on the slave side instructs the tty to go into RAW mode, or
sets the intr character to -1 (which causes the process never to get a
SIGINT, just the character typed) in.telnetd can no longer determine what
the interrupt or erase characters are, and, as a result, an interrupt is
sent as the default interrupt character (you've guessed it, Delete!), and
erase (originally delete) ends up being ignored.
Similar things happen to the other special Telnet sequences.
Of course, telnet, rlogin and screen are affected by this. There are
probably other programs.
These special characters are revealed by typing `show profile' on the
Vista. Near the bottom you will see something like this:
End of Record Disabled Nop ^@
Data Mark Disabled Break ^A
Int Process ^C Abort Output ^O
Attention ^T Erase Char Disabled
Erase Line ^U Goahead Disabled
One would expect you could do somthing like `set profile ip disable'.
Unfortunately you can't (according to the documentation and the Vista
itself). But you also cannot do `set profile ip ^P' or the like, that the
documentation suggests you can do. This, I feel, is also a major bug.
I have made some modifications to in.telnetd (based on the BSD4.3 sources)
which translates the Telnet sequences directly into ^C, delete, ^O, etc..
This solves the problem, with the disadvantage that you now have to
maintain your own version of Telnet. I can supply the diffs on request.
Daniel Kirkham, ACSnet d.kirkham at trl.oz
Telecom Research Laboratories, Internet d.kirkham at trl.oz.au
P.O. Box 249, Clayton, UUCP {uunet,ukc}!munnari!trl.oz!d.kirkham
Victoria 3168, AUSTRALIA. VoiceNet + 61 3 541 6328
More information about the Comp.sys.sun
mailing list