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

Diff for /src/usr.bin/ssh/session.c between version 1.105 and 1.106

version 1.105, 2001/10/09 19:32:49 version 1.106, 2001/10/09 21:59:41
Line 1567 
Line 1567 
         session_close(s);          session_close(s);
 }  }
   
 int  
 session_have_children(void)  
 {  
         int i;  
   
         for(i = 0; i < MAX_SESSIONS; i++) {  
                 Session *s = &sessions[i];  
                 if (s->used && s->pid != -1) {  
                         debug("session_have_children: id %d pid %d", i, s->pid);  
                         return 1;  
                 }  
         }  
         debug("session_have_children: no more children");  
         return 0;  
 }  
   
 /*  /*
  * this is called when a channel dies before   * this is called when a channel dies before
  * the session 'child' itself dies   * the session 'child' itself dies
Line 1600 
Line 1584 
         s->chanid = -1;          s->chanid = -1;
   
         debug("session_close_by_channel: channel %d kill %d", id, s->pid);          debug("session_close_by_channel: channel %d kill %d", id, s->pid);
         if (s->pid == 0) {          if (s->pid != 0) {
                 /* close session immediately */                  /* notify child */
                 session_close(s);                  if (kill(s->pid, SIGHUP) < 0)
         } else {  
                 /* notify child, delay session cleanup */  
                 if (kill(s->pid, (s->ttyfd == -1) ? SIGTERM : SIGHUP) < 0)  
                         error("session_close_by_channel: kill %d: %s",                          error("session_close_by_channel: kill %d: %s",
                             s->pid, strerror(errno));                              s->pid, strerror(errno));
           }
           session_close(s);
   }
   
   void
   session_close_all(void)
   {
           int i;
           for(i = 0; i < MAX_SESSIONS; i++) {
                   Session *s = &sessions[i];
                   if (s->used) {
                           if (s->chanid != -1) {
                                   channel_cancel_cleanup(s->chanid);
                                   s->chanid = -1;
                           }
                           session_close(s);
                   }
         }          }
 }  }
   

Legend:
Removed from v.1.105  
changed lines
  Added in v.1.106