Keep compatibility with 4.2 telnet. Note that 4.2 telnet
authorGregory Minshall <minshall@ucbvax.Berkeley.EDU>
Sat, 8 Mar 1986 08:35:04 +0000 (00:35 -0800)
committerGregory Minshall <minshall@ucbvax.Berkeley.EDU>
Sat, 8 Mar 1986 08:35:04 +0000 (00:35 -0800)
does NOT meet the telnet spec (it sends CR with no following LF or NULL),
but we follow the spec even if we keep compatibility.

SCCS-vsn: libexec/telnetd/telnetd.c 5.7

usr/src/libexec/telnetd/telnetd.c

index d020f16..58c0d4c 100644 (file)
@@ -11,7 +11,7 @@ char copyright[] =
 #endif not lint
 
 #ifndef lint
 #endif not lint
 
 #ifndef lint
-static char sccsid[] = "@(#)telnetd.c  5.6 (Berkeley) %G%";
+static char sccsid[] = "@(#)telnetd.c  5.7 (Berkeley) %G%";
 #endif not lint
 
 /*
 #endif not lint
 
 /*
@@ -298,14 +298,9 @@ telrcv()
 
                case TS_CR:
                        state = TS_DATA;
 
                case TS_CR:
                        state = TS_DATA;
-                       if (c == 0) {
-                               *pfrontp++ = '\r';
+                       if ((c == 0) || (c == '\n')) {
                                break;
                                break;
-                       } else if (c == '\n') {
-                               *pfrontp++ = c;
-                               break;
-                       } else
-                               *pfrontp++ = '\r';
+                       }
                        /* FALL THROUGH */
 
                case TS_DATA:
                        /* FALL THROUGH */
 
                case TS_DATA:
@@ -315,10 +310,10 @@ telrcv()
                        }
                        if (inter > 0)
                                break;
                        }
                        if (inter > 0)
                                break;
-                       if (!myopts[TELOPT_BINARY] && c == '\r')
+                       if (!myopts[TELOPT_BINARY] && c == '\r') {
                                state = TS_CR;
                                state = TS_CR;
-                       else
-                               *pfrontp++ = c;
+                       }
+                       *pfrontp++ = c;
                        break;
 
                case TS_IAC:
                        break;
 
                case TS_IAC: