[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.74 and 1.75

version 1.74, 2001/05/31 10:30:15 version 1.75, 2001/06/04 23:07:20
Line 102 
Line 102 
  * 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 int received_window_change_signal = 0;
   static volatile int 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 171 
Line 172 
 void  void
 signal_handler(int sig)  signal_handler(int sig)
 {  {
         if (in_raw_mode())          received_signal = sig;
                 leave_raw_mode();          quit_pending = 1;
         if (in_non_blocking_mode)  
                 leave_non_blocking();  
         channel_stop_listening();  
         packet_close();  
         fatal("Killed by signal %d.", sig);  
 }  }
   
 /*  /*
Line 933 
Line 929 
         /* Stop listening for connections. */          /* Stop listening for connections. */
         channel_stop_listening();          channel_stop_listening();
   
         /*          if (have_pty)
          * In interactive mode (with pseudo tty) display a message indicating                  leave_raw_mode();
          * that the connection has been closed.  
          */  
         if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) {  
                 snprintf(buf, sizeof buf, "Connection to %.64s closed.\r\n", host);  
                 buffer_append(&stderr_buffer, buf, strlen(buf));  
         }  
   
         /* restore blocking io */          /* restore blocking io */
         if (!isatty(fileno(stdin)))          if (!isatty(fileno(stdin)))
Line 950 
Line 940 
         if (!isatty(fileno(stderr)))          if (!isatty(fileno(stderr)))
                 unset_nonblock(fileno(stderr));                  unset_nonblock(fileno(stderr));
   
           if (received_signal) {
                   if (in_non_blocking_mode)       /* XXX */
                           leave_non_blocking();
                   fatal("Killed by signal %d.", received_signal);
           }
   
           /*
            * In interactive mode (with pseudo tty) display a message indicating
            * that the connection has been closed.
            */
           if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) {
                   snprintf(buf, sizeof buf, "Connection to %.64s closed.\r\n", host);
                   buffer_append(&stderr_buffer, buf, strlen(buf));
           }
   
         /* Output any buffered data for stdout. */          /* Output any buffered data for stdout. */
         while (buffer_len(&stdout_buffer) > 0) {          while (buffer_len(&stdout_buffer) > 0) {
                 len = write(fileno(stdout), buffer_ptr(&stdout_buffer),                  len = write(fileno(stdout), buffer_ptr(&stdout_buffer),
Line 973 
Line 978 
                 buffer_consume(&stderr_buffer, len);                  buffer_consume(&stderr_buffer, len);
                 stderr_bytes += len;                  stderr_bytes += len;
         }          }
   
         if (have_pty)  
                 leave_raw_mode();  
   
         /* Clear and free any buffers. */          /* Clear and free any buffers. */
         memset(buf, 0, sizeof(buf));          memset(buf, 0, sizeof(buf));

Legend:
Removed from v.1.74  
changed lines
  Added in v.1.75