[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.65.2.3 and 1.65.2.4

version 1.65.2.3, 2001/11/15 22:51:15 version 1.65.2.4, 2002/03/09 00:20:44
Line 101 
Line 101 
  * window size to be sent to the server a little later.  This is volatile   * window size to be sent to the server a little later.  This is volatile
  * because this is updated in a signal handler.   * because this is updated in a signal handler.
  */   */
 static volatile int received_window_change_signal = 0;  static volatile sig_atomic_t received_window_change_signal = 0;
 static volatile int received_signal = 0;  static volatile sig_atomic_t received_signal = 0;
   
 /* Flag indicating whether the user\'s terminal is in non-blocking mode. */  /* Flag indicating whether the user\'s terminal is in non-blocking mode. */
 static int in_non_blocking_mode = 0;  static int in_non_blocking_mode = 0;
Line 254 
Line 254 
   
         /* Send buffered stdin data to the server. */          /* Send buffered stdin data to the server. */
         while (buffer_len(&stdin_buffer) > 0 &&          while (buffer_len(&stdin_buffer) > 0 &&
                packet_not_very_much_data_to_write()) {              packet_not_very_much_data_to_write()) {
                 len = buffer_len(&stdin_buffer);                  len = buffer_len(&stdin_buffer);
                 /* Keep the packets at reasonable size. */                  /* Keep the packets at reasonable size. */
                 if (len > packet_get_maxsize())                  if (len > packet_get_maxsize())
Line 417 
Line 417 
         /* Check if the window size has changed. */          /* Check if the window size has changed. */
         if (ioctl(fileno(stdin), TIOCGWINSZ, &newws) >= 0 &&          if (ioctl(fileno(stdin), TIOCGWINSZ, &newws) >= 0 &&
             (oldws.ws_row != newws.ws_row ||              (oldws.ws_row != newws.ws_row ||
              oldws.ws_col != newws.ws_col ||              oldws.ws_col != newws.ws_col ||
              oldws.ws_xpixel != newws.ws_xpixel ||              oldws.ws_xpixel != newws.ws_xpixel ||
              oldws.ws_ypixel != newws.ws_ypixel))              oldws.ws_ypixel != newws.ws_ypixel))
                 received_window_change_signal = 1;                  received_window_change_signal = 1;
   
         /* OK, we have been continued by the user. Reinitialize buffers. */          /* OK, we have been continued by the user. Reinitialize buffers. */
Line 949 
Line 949 
         if (received_signal) {          if (received_signal) {
                 if (in_non_blocking_mode)       /* XXX */                  if (in_non_blocking_mode)       /* XXX */
                         leave_non_blocking();                          leave_non_blocking();
                 fatal("Killed by signal %d.", received_signal);                  fatal("Killed by signal %d.", (int) received_signal);
         }          }
   
         /*          /*
Line 994 
Line 994 
         /* Report bytes transferred, and transfer rates. */          /* Report bytes transferred, and transfer rates. */
         total_time = get_current_time() - start_time;          total_time = get_current_time() - start_time;
         debug("Transferred: stdin %lu, stdout %lu, stderr %lu bytes in %.1f seconds",          debug("Transferred: stdin %lu, stdout %lu, stderr %lu bytes in %.1f seconds",
               stdin_bytes, stdout_bytes, stderr_bytes, total_time);              stdin_bytes, stdout_bytes, stderr_bytes, total_time);
         if (total_time > 0)          if (total_time > 0)
                 debug("Bytes per second: stdin %.1f, stdout %.1f, stderr %.1f",                  debug("Bytes per second: stdin %.1f, stdout %.1f, stderr %.1f",
                       stdin_bytes / total_time, stdout_bytes / total_time,                      stdin_bytes / total_time, stdout_bytes / total_time,
                       stderr_bytes / total_time);                      stderr_bytes / total_time);
   
         /* Return the exit status of the program. */          /* Return the exit status of the program. */
         debug("Exit status %d", exit_status);          debug("Exit status %d", exit_status);
Line 1008 
Line 1008 
 /*********/  /*********/
   
 static void  static void
 client_input_stdout_data(int type, int plen, void *ctxt)  client_input_stdout_data(int type, u_int32_t seq, void *ctxt)
 {  {
         u_int data_len;          u_int data_len;
         char *data = packet_get_string(&data_len);          char *data = packet_get_string(&data_len);
         packet_integrity_check(plen, 4 + data_len, type);          packet_check_eom();
         buffer_append(&stdout_buffer, data, data_len);          buffer_append(&stdout_buffer, data, data_len);
         memset(data, 0, data_len);          memset(data, 0, data_len);
         xfree(data);          xfree(data);
 }  }
 static void  static void
 client_input_stderr_data(int type, int plen, void *ctxt)  client_input_stderr_data(int type, u_int32_t seq, void *ctxt)
 {  {
         u_int data_len;          u_int data_len;
         char *data = packet_get_string(&data_len);          char *data = packet_get_string(&data_len);
         packet_integrity_check(plen, 4 + data_len, type);          packet_check_eom();
         buffer_append(&stderr_buffer, data, data_len);          buffer_append(&stderr_buffer, data, data_len);
         memset(data, 0, data_len);          memset(data, 0, data_len);
         xfree(data);          xfree(data);
 }  }
 static void  static void
 client_input_exit_status(int type, int plen, void *ctxt)  client_input_exit_status(int type, u_int32_t seq, void *ctxt)
 {  {
         packet_integrity_check(plen, 4, type);  
         exit_status = packet_get_int();          exit_status = packet_get_int();
           packet_check_eom();
         /* Acknowledge the exit. */          /* Acknowledge the exit. */
         packet_start(SSH_CMSG_EXIT_CONFIRMATION);          packet_start(SSH_CMSG_EXIT_CONFIRMATION);
         packet_send();          packet_send();
Line 1057 
Line 1057 
         listen_port = packet_get_int();          listen_port = packet_get_int();
         originator_address = packet_get_string(NULL);          originator_address = packet_get_string(NULL);
         originator_port = packet_get_int();          originator_port = packet_get_int();
         packet_done();          packet_check_eom();
   
         debug("client_request_forwarded_tcpip: listen %s port %d, originator %s port %d",          debug("client_request_forwarded_tcpip: listen %s port %d, originator %s port %d",
             listen_address, listen_port, originator_address, originator_port);              listen_address, listen_port, originator_address, originator_port);
Line 1072 
Line 1072 
             SSH_CHANNEL_CONNECTING, sock, sock, -1,              SSH_CHANNEL_CONNECTING, sock, sock, -1,
             CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_WINDOW_DEFAULT, 0,              CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_WINDOW_DEFAULT, 0,
             xstrdup(originator_address), 1);              xstrdup(originator_address), 1);
         if (c == NULL) {  
                 error("client_request_forwarded_tcpip: channel_new failed");  
                 close(sock);  
         }  
         xfree(originator_address);          xfree(originator_address);
         xfree(listen_address);          xfree(listen_address);
         return c;          return c;
Line 1101 
Line 1097 
         } else {          } else {
                 originator_port = packet_get_int();                  originator_port = packet_get_int();
         }          }
         packet_done();          packet_check_eom();
         /* XXX check permission */          /* XXX check permission */
         debug("client_request_x11: request from %s %d", originator,          debug("client_request_x11: request from %s %d", originator,
             originator_port);              originator_port);
Line 1113 
Line 1109 
             SSH_CHANNEL_X11_OPEN, sock, sock, -1,              SSH_CHANNEL_X11_OPEN, sock, sock, -1,
             CHAN_TCP_WINDOW_DEFAULT, CHAN_X11_PACKET_DEFAULT, 0,              CHAN_TCP_WINDOW_DEFAULT, CHAN_X11_PACKET_DEFAULT, 0,
             xstrdup("x11"), 1);              xstrdup("x11"), 1);
         if (c == NULL) {  
                 error("client_request_x11: channel_new failed");  
                 close(sock);  
         }  
         c->force_drain = 1;          c->force_drain = 1;
         return c;          return c;
 }  }
Line 1139 
Line 1131 
             SSH_CHANNEL_OPEN, sock, sock, -1,              SSH_CHANNEL_OPEN, sock, sock, -1,
             CHAN_X11_WINDOW_DEFAULT, CHAN_TCP_WINDOW_DEFAULT, 0,              CHAN_X11_WINDOW_DEFAULT, CHAN_TCP_WINDOW_DEFAULT, 0,
             xstrdup("authentication agent connection"), 1);              xstrdup("authentication agent connection"), 1);
         if (c == NULL) {  
                 error("client_request_agent: channel_new failed");  
                 close(sock);  
         }  
         c->force_drain = 1;          c->force_drain = 1;
         return c;          return c;
 }  }
   
 /* XXXX move to generic input handler */  /* XXXX move to generic input handler */
 static void  static void
 client_input_channel_open(int type, int plen, void *ctxt)  client_input_channel_open(int type, u_int32_t seq, void *ctxt)
 {  {
         Channel *c = NULL;          Channel *c = NULL;
         char *ctype;          char *ctype;
Line 1201 
Line 1189 
         xfree(ctype);          xfree(ctype);
 }  }
 static void  static void
 client_input_channel_req(int type, int plen, void *ctxt)  client_input_channel_req(int type, u_int32_t seq, void *ctxt)
 {  {
         Channel *c = NULL;          Channel *c = NULL;
         int id, reply, success = 0;          int id, reply, success = 0;
Line 1226 
Line 1214 
         } else if (strcmp(rtype, "exit-status") == 0) {          } else if (strcmp(rtype, "exit-status") == 0) {
                 success = 1;                  success = 1;
                 exit_status = packet_get_int();                  exit_status = packet_get_int();
                 packet_done();                  packet_check_eom();
         }          }
         if (reply) {          if (reply) {
                 packet_start(success ?                  packet_start(success ?
Line 1236 
Line 1224 
         }          }
         xfree(rtype);          xfree(rtype);
 }  }
   static void
   client_input_global_request(int type, u_int32_t seq, void *ctxt)
   {
           char *rtype;
           int want_reply;
           int success = 0;
   
           rtype = packet_get_string(NULL);
           want_reply = packet_get_char();
           debug("client_input_global_request: rtype %s want_reply %d", rtype, want_reply);
           if (want_reply) {
                   packet_start(success ?
                       SSH2_MSG_REQUEST_SUCCESS : SSH2_MSG_REQUEST_FAILURE);
                   packet_send();
                   packet_write_wait();
           }
           xfree(rtype);
   }
   
 static void  static void
 client_init_dispatch_20(void)  client_init_dispatch_20(void)
 {  {
Line 1250 
Line 1256 
         dispatch_set(SSH2_MSG_CHANNEL_OPEN_FAILURE, &channel_input_open_failure);          dispatch_set(SSH2_MSG_CHANNEL_OPEN_FAILURE, &channel_input_open_failure);
         dispatch_set(SSH2_MSG_CHANNEL_REQUEST, &client_input_channel_req);          dispatch_set(SSH2_MSG_CHANNEL_REQUEST, &client_input_channel_req);
         dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust);          dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust);
           dispatch_set(SSH2_MSG_GLOBAL_REQUEST, &client_input_global_request);
   
         /* rekeying */          /* rekeying */
         dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit);          dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit);

Legend:
Removed from v.1.65.2.3  
changed lines
  Added in v.1.65.2.4