Fix Telnet option processing issue
[vpp.git] / src / vlib / unix / cli.c
index b268db5..42c1374 100644 (file)
@@ -60,6 +60,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 #include <limits.h>
+#include <netinet/tcp.h>
 
 /** ANSI escape code. */
 #define ESC "\x1b"
@@ -1294,7 +1295,7 @@ unix_cli_process_telnet (unix_main_t * um,
     case DO:
     case DONT:
       /* Expect 3 bytes */
-      if (vec_len (input_vector) < 3)
+      if (len < 3)
        return -1;              /* want more bytes */
 
       consume = 2;
@@ -2763,11 +2764,17 @@ unix_cli_listen_read_ready (clib_file_t * uf)
   clib_error_t *error;
   unix_cli_file_t *cf;
   u32 cf_index;
+  int one;
 
   error = clib_socket_accept (s, &client);
   if (error)
     return error;
 
+  /* Disable Nagle, ignore any errors doing so eg on PF_LOCAL socket */
+  one = 1;
+  setsockopt (client.fd, IPPROTO_TCP, TCP_NODELAY,
+             (void *) &one, sizeof (one));
+
   client_name = (char *) format (0, "%U%c", format_sockaddr, &client.peer, 0);
 
   cf_index = unix_cli_file_add (cm, client_name, client.fd);