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