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

Diff for /src/usr.bin/tmux/server.c between version 1.103 and 1.104

version 1.103, 2012/03/09 09:57:40 version 1.104, 2012/04/11 06:16:14
Line 191 
Line 191 
         }          }
         cfg_finished = 1;          cfg_finished = 1;
   
         event_set(&server_ev_accept,          server_add_accept(0);
             server_fd, EV_READ|EV_PERSIST, server_accept_callback, NULL);  
         event_add(&server_ev_accept, NULL);  
   
         memset(&tv, 0, sizeof tv);          memset(&tv, 0, sizeof tv);
         tv.tv_sec = 1;          tv.tv_sec = 1;
Line 337 
Line 335 
         socklen_t               slen = sizeof sa;          socklen_t               slen = sizeof sa;
         int                     newfd;          int                     newfd;
   
           server_add_accept(0);
         if (!(events & EV_READ))          if (!(events & EV_READ))
                 return;                  return;
   
Line 344 
Line 343 
         if (newfd == -1) {          if (newfd == -1) {
                 if (errno == EAGAIN || errno == EINTR || errno == ECONNABORTED)                  if (errno == EAGAIN || errno == EINTR || errno == ECONNABORTED)
                         return;                          return;
                   if (errno == ENFILE || errno == EMFILE) {
                           /* Delete and don't try again for 1 second. */
                           server_add_accept(1);
                           return;
                   }
                 fatal("accept failed");                  fatal("accept failed");
         }          }
         if (server_shutdown) {          if (server_shutdown) {
Line 353 
Line 357 
         server_client_create(newfd);          server_client_create(newfd);
 }  }
   
   /*
    * Add accept event. If timeout is nonzero, add as a timeout instead of a read
    * event - used to backoff when running out of file descriptors.
    */
   void
   server_add_accept(int timeout)
   {
           struct timeval tv = { timeout, 0 };
   
           if (event_initialized(&server_ev_accept))
                   event_del(&server_ev_accept);
   
           if (timeout == 0) {
                   event_set(&server_ev_accept,
                       server_fd, EV_READ, server_accept_callback, NULL);
                   event_add(&server_ev_accept, NULL);
           } else {
                   event_set(&server_ev_accept,
                       server_fd, EV_TIMEOUT, server_accept_callback, NULL);
                   event_add(&server_ev_accept, &tv);
           }
   }
   
 /* Signal handler. */  /* Signal handler. */
 /* ARGSUSED */  /* ARGSUSED */
 void  void
Line 370 
Line 397 
                 event_del(&server_ev_accept);                  event_del(&server_ev_accept);
                 close(server_fd);                  close(server_fd);
                 server_fd = server_create_socket();                  server_fd = server_create_socket();
                 event_set(&server_ev_accept, server_fd,                  server_add_accept(0);
                     EV_READ|EV_PERSIST, server_accept_callback, NULL);  
                 event_add(&server_ev_accept, NULL);  
                 break;                  break;
         }          }
 }  }

Legend:
Removed from v.1.103  
changed lines
  Added in v.1.104