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

Diff for /src/usr.bin/ssh/nchan.c between version 1.22 and 1.23

version 1.22, 2001/01/21 19:05:52 version 1.23, 2001/02/28 08:54:55
Line 54 
Line 54 
 static void     chan_send_close2(Channel *c);  static void     chan_send_close2(Channel *c);
 static void     chan_send_eof2(Channel *c);  static void     chan_send_eof2(Channel *c);
   
 /* channel cleanup */  
 chan_event_fn *chan_delete_if_full_closed       = NULL;  
   
 /* helper */  /* helper */
 static void     chan_shutdown_write(Channel *c);  static void     chan_shutdown_write(Channel *c);
 static void     chan_shutdown_read(Channel *c);  static void     chan_shutdown_read(Channel *c);
Line 249 
Line 246 
                 break;                  break;
         }          }
 }  }
 static void  
 chan_delete_if_full_closed1(Channel *c)  
 {  
         debug3("channel %d: chan_delete_if_full_closed1: istate %d ostate %d",  
             c->self, c->istate, c->ostate);  
         if (c->istate == CHAN_INPUT_CLOSED && c->ostate == CHAN_OUTPUT_CLOSED) {  
                 debug("channel %d: full closed", c->self);  
                 channel_free(c->self);  
         }  
 }  
   
 /*  /*
  * the same for SSH2   * the same for SSH2
Line 401 
Line 388 
                 c->flags |= CHAN_CLOSE_SENT;                  c->flags |= CHAN_CLOSE_SENT;
         }          }
 }  }
 static void  
 chan_delete_if_full_closed2(Channel *c)  /* shared */
   
   int
   chan_is_dead(Channel *c)
 {  {
         debug3("channel %d: chan_delete_if_full_closed2: istate %d ostate %d",          if (c->istate != CHAN_INPUT_CLOSED || c->ostate != CHAN_OUTPUT_CLOSED)
             c->self, c->istate, c->ostate);                  return 0;
         if (c->istate == CHAN_INPUT_CLOSED && c->ostate == CHAN_OUTPUT_CLOSED) {          if (!compat20) {
                   debug("channel %d: is dead", c->self);
                   return 1;
           }
           /*
            * we have to delay the close message if the efd (for stderr) is
            * still active
            */
           if (((c->extended_usage != CHAN_EXTENDED_IGNORE) &&
               buffer_len(&c->extended) > 0)
   #if 0
               || ((c->extended_usage == CHAN_EXTENDED_READ) &&
               c->efd != -1)
   #endif
               ) {
                   debug2("channel %d: active efd: %d len %d type %s",
                       c->self, c->efd, buffer_len(&c->extended),
                       c->extended_usage==CHAN_EXTENDED_READ ?
                          "read": "write");
           } else {
                 if (!(c->flags & CHAN_CLOSE_SENT)) {                  if (!(c->flags & CHAN_CLOSE_SENT)) {
                         chan_send_close2(c);                          chan_send_close2(c);
                 }                  }
                 if ((c->flags & CHAN_CLOSE_SENT) &&                  if ((c->flags & CHAN_CLOSE_SENT) &&
                     (c->flags & CHAN_CLOSE_RCVD)) {                      (c->flags & CHAN_CLOSE_RCVD)) {
                         debug("channel %d: full closed2", c->self);                          debug("channel %d: is dead", c->self);
                         channel_free(c->self);                          return 1;
                 }                  }
         }          }
           return 0;
 }  }
   
 /* shared */  
 void  void
 chan_init_iostates(Channel *c)  chan_init_iostates(Channel *c)
 {  {
Line 439 
Line 448 
                 chan_rcvd_ieof                  = chan_rcvd_ieof2;                  chan_rcvd_ieof                  = chan_rcvd_ieof2;
                 chan_write_failed               = chan_write_failed2;                  chan_write_failed               = chan_write_failed2;
                 chan_obuf_empty                 = chan_obuf_empty2;                  chan_obuf_empty                 = chan_obuf_empty2;
   
                 chan_delete_if_full_closed      = chan_delete_if_full_closed2;  
         } else {          } else {
                 chan_rcvd_oclose                = chan_rcvd_oclose1;                  chan_rcvd_oclose                = chan_rcvd_oclose1;
                 chan_read_failed                = chan_read_failed_12;                  chan_read_failed                = chan_read_failed_12;
Line 449 
Line 456 
                 chan_rcvd_ieof                  = chan_rcvd_ieof1;                  chan_rcvd_ieof                  = chan_rcvd_ieof1;
                 chan_write_failed               = chan_write_failed1;                  chan_write_failed               = chan_write_failed1;
                 chan_obuf_empty                 = chan_obuf_empty1;                  chan_obuf_empty                 = chan_obuf_empty1;
   
                 chan_delete_if_full_closed      = chan_delete_if_full_closed1;  
         }          }
 }  }
   

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23