ITEM: H2642L

Problem with telnet session, cannot send break to the RISC.


Question:

When I hit the 'break' key in a telnet session from an OEM
workstation, it causes a core dump, instead of interupting the 
current process. Why?  

Response:

The machine that you are telnetting from tries to figure out
what character needs to be sent to cause a 'interrupt' on the 
host.  The character that is sent varies depending on the 
specific versions and configurations of tcpip on the client 
and host.  Sometimes the wrong character gets sent.

In your case, when the break key on the client is pressed, a 
xff gets sent.  The RISC is expecting x03 (ctrl-c).

To find out what the client is sending:

  Open a test file with vi while in a telnet session.
       type 'vi test'

  Put vi into insert mode.

      type 'i'

  Put vi into literal mode so that it will not try to interpret
  the next charater sequence.

      type '\-v'

  A '\^' should appear on the screen.

  Hit the break key.

  Save the file.
       
      type '\:wq'

  Do a hex dump on the file.

      type 'od -x test'

  The ouput in your case will look like this.

      0000000  ff0a
      0000002

  The 'ff' hexidecimal value of the character sent, and the '0a' is 
  the hex value for EOL.

To find out what the RISC expects as a 'break' character: 

     type 'stty -a'

   Look to see what 'intr' equals.  Yours is set to \^C which is x03 
   in hex.  

There are at least two ways to solve such discrepencies. 
 The easiest way would be to change the 'stty intr' to expect the
character that is being sent.  If the client were sending \^P when
you press the break key then you would simply type:  

    stty intr \^P  

at the command line.  Make sure that you type \-p and not '\^' 
and 'P'.

This method will not work in your case because stty attributes will
only except values between x00 and x07.  Your client is sending xff.

A second way to bridge this gap would be to use setmaps to search the 
incoming data stream for the character being sent and remap it to the 
value that the RISC expects.

To do this, create a file called '/usr/lib/nls/termmap/mine.in' 
that contains:

  \\xff:\\x03

To load the map into the kernel, type the following command as root:

  setmaps -l mine.in

To use the map on a particular terminal, a user would type:

  setmaps -i mine

To stop using the map, a user would type:

  setmaps -c


Support Line: Problem with telnet session, cannot send break to the RISC. ITEM: H2642L
Dated: April 1994 Category: N/A
This HTML file was generated 99/06/24~13:30:48
Comments or suggestions? Contact us