[BACK]Return to clientloop.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/clientloop.c between version 1.84.2.2 and 1.84.2.3

version 1.84.2.2, 2002/03/07 17:37:46 version 1.84.2.3, 2002/05/17 00:03:23
Line 81 
Line 81 
 #include "atomicio.h"  #include "atomicio.h"
 #include "sshtty.h"  #include "sshtty.h"
 #include "misc.h"  #include "misc.h"
   #include "readpass.h"
   
 /* import options */  /* import options */
 extern Options options;  extern Options options;
Line 470 
Line 471 
         }          }
 }  }
   
   static void
   process_cmdline(void)
   {
           void (*handler)(int);
           char *s, *cmd;
           u_short fwd_port, fwd_host_port;
           char buf[1024], sfwd_port[6], sfwd_host_port[6];
           int local = 0;
   
           leave_raw_mode();
           handler = signal(SIGINT, SIG_IGN);
           cmd = s = read_passphrase("\r\nssh> ", RP_ECHO);
           if (s == NULL)
                   goto out;
           while (*s && isspace(*s))
                   s++;
           if (*s == 0)
                   goto out;
           if (strlen(s) < 2 || s[0] != '-' || !(s[1] == 'L' || s[1] == 'R')) {
                   log("Invalid command.");
                   goto out;
           }
           if (s[1] == 'L')
                   local = 1;
           if (!local && !compat20) {
                   log("Not supported for SSH protocol version 1.");
                   goto out;
           }
           s += 2;
           while (*s && isspace(*s))
                   s++;
   
           if (sscanf(s, "%5[0-9]:%255[^:]:%5[0-9]",
               sfwd_port, buf, sfwd_host_port) != 3 &&
               sscanf(s, "%5[0-9]/%255[^/]/%5[0-9]",
               sfwd_port, buf, sfwd_host_port) != 3) {
                   log("Bad forwarding specification.");
                   goto out;
           }
           if ((fwd_port = a2port(sfwd_port)) == 0 ||
               (fwd_host_port = a2port(sfwd_host_port)) == 0) {
                   log("Bad forwarding port(s).");
                   goto out;
           }
           if (local) {
                   if (channel_setup_local_fwd_listener(fwd_port, buf,
                       fwd_host_port, options.gateway_ports) < 0) {
                           log("Port forwarding failed.");
                           goto out;
                   }
           } else
                   channel_request_remote_forwarding(fwd_port, buf,
                       fwd_host_port);
           log("Forwarding port.");
   out:
           signal(SIGINT, handler);
           enter_raw_mode();
           if (cmd)
                   xfree(cmd);
   }
   
 /* process the characters one by one */  /* process the characters one by one */
 static int  static int
 process_escapes(Buffer *bin, Buffer *bout, Buffer *berr, char *buf, int len)  process_escapes(Buffer *bin, Buffer *bout, Buffer *berr, char *buf, int len)
Line 574 
Line 636 
 "%c?\r\n\  "%c?\r\n\
 Supported escape sequences:\r\n\  Supported escape sequences:\r\n\
 ~.  - terminate connection\r\n\  ~.  - terminate connection\r\n\
   ~C  - open a command line\r\n\
 ~R  - Request rekey (SSH protocol 2 only)\r\n\  ~R  - Request rekey (SSH protocol 2 only)\r\n\
 ~^Z - suspend ssh\r\n\  ~^Z - suspend ssh\r\n\
 ~#  - list forwarded connections\r\n\  ~#  - list forwarded connections\r\n\
Line 593 
Line 656 
                                 xfree(s);                                  xfree(s);
                                 continue;                                  continue;
   
                           case 'C':
                                   process_cmdline();
                                   continue;
   
                         default:                          default:
                                 if (ch != escape_char) {                                  if (ch != escape_char) {
                                         buffer_put_char(bin, escape_char);                                          buffer_put_char(bin, escape_char);
Line 1247 
Line 1314 
 client_init_dispatch_20(void)  client_init_dispatch_20(void)
 {  {
         dispatch_init(&dispatch_protocol_error);          dispatch_init(&dispatch_protocol_error);
   
         dispatch_set(SSH2_MSG_CHANNEL_CLOSE, &channel_input_oclose);          dispatch_set(SSH2_MSG_CHANNEL_CLOSE, &channel_input_oclose);
         dispatch_set(SSH2_MSG_CHANNEL_DATA, &channel_input_data);          dispatch_set(SSH2_MSG_CHANNEL_DATA, &channel_input_data);
         dispatch_set(SSH2_MSG_CHANNEL_EOF, &channel_input_ieof);          dispatch_set(SSH2_MSG_CHANNEL_EOF, &channel_input_ieof);
Line 1260 
Line 1328 
   
         /* rekeying */          /* rekeying */
         dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit);          dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit);
   
           /* global request reply messages */
           dispatch_set(SSH2_MSG_REQUEST_FAILURE, &client_global_request_reply);
           dispatch_set(SSH2_MSG_REQUEST_SUCCESS, &client_global_request_reply);
 }  }
 static void  static void
 client_init_dispatch_13(void)  client_init_dispatch_13(void)

Legend:
Removed from v.1.84.2.2  
changed lines
  Added in v.1.84.2.3