From 3752d337b3b8e704f1fe27451d481eae85d64f48 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 19 Dec 2003 11:30:13 +0000 Subject: Patch from Fillod Stephane: * While I'm at it, there's also a "telnetd.patch" which maps CRLF to CR, like netkit-telnet does, required by the loosy Windows telnet clients. --- networking/telnetd.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'networking/telnetd.c') diff --git a/networking/telnetd.c b/networking/telnetd.c index 9a60a9a3c..3d5e8d100 100644 --- a/networking/telnetd.c +++ b/networking/telnetd.c @@ -1,4 +1,4 @@ -/* $Id: telnetd.c,v 1.8 2003/09/12 11:27:15 bug1 Exp $ +/* $Id: telnetd.c,v 1.9 2003/12/19 11:30:13 andersen Exp $ * * Simple telnet server * Bjorn Wesen, Axis Communications AB (bjornw@axis.com) @@ -116,6 +116,8 @@ static struct tsession *sessions; FIXME - if we mean to send 0xFF to the terminal then it will be escaped, what is the escape character? We aren't handling that situation here. + CR-LF ->'s CR mapping is also done here, for convenience + */ static char * remove_iacs(struct tsession *ts, int *pnum_totty) { @@ -128,7 +130,14 @@ remove_iacs(struct tsession *ts, int *pnum_totty) { while (ptr < end) { if (*ptr != IAC) { + int c = *ptr; *totty++ = *ptr++; + /* We now map \r\n ==> \r for pragmatic reasons. + * Many client implementations send \r\n when + * the user hits the CarriageReturn key. + */ + if (c == '\r' && (*ptr == '\n' || *ptr == 0) && ptr < end) + ptr++; } else { if ((ptr+2) < end) { -- cgit v1.2.3