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.
This commit is contained in:
Eric Andersen 2003-12-19 11:30:13 +00:00
parent 89f10bcf37
commit 3752d337b3

View File

@ -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 * Simple telnet server
* Bjorn Wesen, Axis Communications AB (bjornw@axis.com) * 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, 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. 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 * static char *
remove_iacs(struct tsession *ts, int *pnum_totty) { remove_iacs(struct tsession *ts, int *pnum_totty) {
@ -128,7 +130,14 @@ remove_iacs(struct tsession *ts, int *pnum_totty) {
while (ptr < end) { while (ptr < end) {
if (*ptr != IAC) { if (*ptr != IAC) {
int c = *ptr;
*totty++ = *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 { else {
if ((ptr+2) < end) { if ((ptr+2) < end) {