Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!husc6!cmcl2!rutgers!sri-spam!ames!ucbcad!ucbvax!ENGVAX.SCG.HAC.COM!KVC
From: KVC@ENGVAX.SCG.HAC.COM (Kevin Carosso)
Newsgroups: comp.protocols.tcp-ip
Subject: Re: wollongong telnet and new line processing
Message-ID: <8707212141.AA14540@ucbvax.Berkeley.EDU>
Date: Mon, 20-Jul-87 22:55:00 EDT
Article-I.D.: ucbvax.8707212141.AA14540
Posted: Mon Jul 20 22:55:00 1987
Date-Received: Thu, 23-Jul-87 04:48:09 EDT
Sender: daemon@ucbvax.BERKELEY.EDU
Distribution: world
Organization: The ARPA Internet
Lines: 54

> Unix translate the \r into a \n and sends it across the net
> to the VMS machine which promptly deletes the word GUEST. This
> makes logging in a little difficult.

> I say this because if you are connect to the Unix machine
> via a direct line everything works fine. This problem only
> occurs when you are connected via a pty. We use Bridge
> cs/1 terminal servers almost exclusivly, hence you are always
> connected to a pty and never to a direct line.

> This leads me to think that the problem lies somewhere in the
> pty driver. Anyone have any ideas?
> Bill King

We had the same problem here, but a different manifestation (couldn't
run a local editor or TELNET to a VMS system running CMU IP/TCP).

The problem occurs when you connect via TELNET to a 4.3 system and then
run any program which reads in raw mode and expects to see EXACTLY the
key the user typed.  I traced the problem to the fact that "telnetd.c"
has the following in it:

                        /*
                         * We map \r\n ==> \n, since \r\n says
                         * that we want to be in column 1 of the next
                         * printable line, and \n is the standard
                         * unix way of saying that (\r is only good
                         * if CRMOD is set, which it normally is).
                         */
                        if ((myopts[TELOPT_BINARY] == OPT_NO) && c == '\r') {
                                if ((ncc > 0) && ('\n' == *netip)) {
                                        netip++; ncc--;
                                        c = '\n';
                                } else {
                                        state = TS_CR;
                                }
                        }

I don't think it's right to map  to .  I changed it to map to 
instead, and everything works just fine.  The terminal driver will map the 
to  when necessary and programs that think that are supposed to get a 
now work fine.

My rationale was that the UNIX tty driver is set up to work with terminals
that usually send  when the user hits "carriage return".  A pty works
just like a tty, so we should be sending  into it.

I suppose another approach might be to say that the Bridge TELNET code is
broken and that it shouldn't be sending  when you type
"carriage return" but should send .  I can't fix the Bridge code,
though.

        /Kevin Carosso                     kvc@engvax.scg.hac.com
         Hughes Aircraft Co.               kvc%engvax@oberon.usc.edu