[ros-diffs] [sedwards] 39428: - Make telnetd only slightly more RFC-compatible Thanks to Fedora Anaconda telnet code as an example. This allows us to actually get an echo back on the screen when we type commands.

sedwards at svn.reactos.org sedwards at svn.reactos.org
Fri Feb 6 06:34:43 CET 2009


Author: sedwards
Date: Thu Feb  5 23:34:39 2009
New Revision: 39428

URL: http://svn.reactos.org/svn/reactos?rev=39428&view=rev
Log:
 - Make telnetd only slightly more RFC-compatible
Thanks to Fedora Anaconda telnet code as an example.
This allows us to actually get an echo back on the
screen when we type commands.


Modified:
    trunk/rosapps/applications/sysutils/telnetd/telnetd.c

Modified: trunk/rosapps/applications/sysutils/telnetd/telnetd.c
URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/sysutils/telnetd/telnetd.c?rev=39428&r1=39427&r2=39428&view=diff
==============================================================================
--- trunk/rosapps/applications/sysutils/telnetd/telnetd.c [iso-8859-1] (original)
+++ trunk/rosapps/applications/sysutils/telnetd/telnetd.c [iso-8859-1] Thu Feb  5 23:34:39 2009
@@ -35,12 +35,21 @@
 #define LF               (10)
 #define DEL             (127)
 
-#define IAC             (255)
-#define DONT            (254)
-#define WONT            (253)
-#define DO              (252)
-#define WILL            (251)
-#define ECHO            (1)
+#define IAC "\xff"
+#define DONT "\xfe"
+#define WONT "\xfc"
+#define WILL "\xfb"
+#define DO "\xfd"
+#define SB "\xfa"
+#define SE "\xf0"
+#define ECHO "\x01"
+#define SUPPRESS_GO_AHEAD "\x03"
+#define TERMINAL_TYPE "\x18"
+#define NAWS "\x1f"
+#define LINEMODE "\x22"
+#define NEWENVIRON "\x27"
+#define MODE "\x01"
+
 
 #define HANDSHAKE_TIMEOUT (3)
 
@@ -300,10 +309,23 @@
   int received;
   fd_set set;
   struct timeval timeout = { HANDSHAKE_TIMEOUT, 0 };
-  unsigned char will_echo[3] = { IAC, WILL, ECHO };
+
+  char will_echo[]=
+      IAC DONT ECHO
+      IAC WILL ECHO
+      IAC WILL NAWS
+      IAC WILL SUPPRESS_GO_AHEAD
+      IAC DO SUPPRESS_GO_AHEAD
+      IAC DONT NEWENVIRON
+      IAC WONT NEWENVIRON
+      IAC WONT LINEMODE
+      IAC DO NAWS
+      IAC SB TERMINAL_TYPE "\x01" IAC SE
+      ;
+
   unsigned char client_reply[256];
 
-  if (send(sock, (const char *) will_echo, sizeof(will_echo), 0) < 0) {   
+  if (send(sock, will_echo, sizeof(will_echo), 0) < 0) {   
     return -1;
   }
 
@@ -682,3 +704,4 @@
    }
    ExitProcess(0); 
 } 
+



More information about the Ros-diffs mailing list