Telnet and carriage return.
Ralf Friedl
Ralf.Friedl at online.de
Thu Sep 13 14:48:55 UTC 2012
Denys Vlasenko wrote:
> On Thu, Sep 13, 2012 at 2:55 PM, Ralf Friedl <Ralf.Friedl at online.de> wrote:
>
>> Denys Vlasenko wrote:
>>
>>> Changed it to this in git:
>>>
>>> else if (c == '\r')
>>> - outbuf[j++] = '\0'; /* CR -> CR NUL */
>>> + /* See RFC 1123 3.3.1 Telnet End-of-Line
>>> Convention.
>>> + * Using CR LF instead of other allowed
>>> possibilities
>>> + * like CR NUL - easier to talk to HTTP/SMTP
>>> servers.
>>> + */
>>> + outbuf[j++] = '\n'; /* CR -> CR LF */
>>>
>> This sends a CR-LF End-of-Line, but as a response to Ctrl-M.
>>
> Is that wrong or what? I don't understand what you want to say.
>
This change converts CR to CR-LF. But to type CR you have to press
Ctrl-V Ctrl-M, not the enter key. The enter key is read as LF or '\n'.
This the "end-of-line" key or "Return" or "Enter" from RFC1123 section
3.3.1. According to this section, "end-of-line" or LF should be sent by
default to a telnet server and what must be sent to a non telnet server.
I looked at the behavior of the standard telnet client when talking to
an SMTP server (and probably to any non telnet server) and it is this:
CR -> CR NUL
LF -> CR LF
So a single CR is converted to CR NUL to show the server that CR or '\r'
or Ctrl-M was pressed.
A single LF is converted to CR LF to show the server that LF or '\n' or
Ctrl-J was pressed.
>> In line mode
>> the telnet client reads Ctrl-J or LF when the user presses enter.
>>
>
> I am not even familiar with this line mode thingy.
> Let me experiment... ok, so in line more we see '\n'
> from keyboard, not '\r'.
>
I think busybox telnet doesn't really implement the telnet linemode, but
what is called 'old line by line' in the telnet manual. Just read a line
terminated by '\n' from the keyboard and sent it to the server. But this
mode is what I meant when I wrote line mode.
>> The right thing to do would be to revert this change and to add
>> + else if (c == '\n' && G.charmode != CHM_ON) {
>> + outbuf[j] = '\r'; /* LF -> CR LF */
>> + outbuf[j++] = '\n';
>> + }
>>
>
> Probably...
More information about the busybox
mailing list