[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.177 and 1.178

version 1.177, 2017/10/12 11:32:27 version 1.178, 2017/12/19 15:00:39
Line 50 
Line 50 
   
 struct cmd_find_state    marked_pane;  struct cmd_find_state    marked_pane;
   
 static int      server_create_socket(void);  
 static int      server_loop(void);  static int      server_loop(void);
 static void     server_send_exit(void);  static void     server_send_exit(void);
 static void     server_accept(int, short, void *);  static void     server_accept(int, short, void *);
Line 99 
Line 98 
   
 /* Create server socket. */  /* Create server socket. */
 static int  static int
 server_create_socket(void)  server_create_socket(char **cause)
 {  {
         struct sockaddr_un      sa;          struct sockaddr_un      sa;
         size_t                  size;          size_t                  size;
         mode_t                  mask;          mode_t                  mask;
         int                     fd;          int                     fd, saved_errno;
   
         memset(&sa, 0, sizeof sa);          memset(&sa, 0, sizeof sa);
         sa.sun_family = AF_UNIX;          sa.sun_family = AF_UNIX;
         size = strlcpy(sa.sun_path, socket_path, sizeof sa.sun_path);          size = strlcpy(sa.sun_path, socket_path, sizeof sa.sun_path);
         if (size >= sizeof sa.sun_path) {          if (size >= sizeof sa.sun_path) {
                 errno = ENAMETOOLONG;                  errno = ENAMETOOLONG;
                 return (-1);                  goto fail;
         }          }
         unlink(sa.sun_path);          unlink(sa.sun_path);
   
         if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)          if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
                 return (-1);                  goto fail;
   
         mask = umask(S_IXUSR|S_IXGRP|S_IRWXO);          mask = umask(S_IXUSR|S_IXGRP|S_IRWXO);
         if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) == -1) {          if (bind(fd, (struct sockaddr *)&sa, sizeof sa) == -1) {
                   saved_errno = errno;
                 close(fd);                  close(fd);
                 return (-1);                  errno = saved_errno;
                   goto fail;
         }          }
         umask(mask);          umask(mask);
   
         if (listen(fd, 128) == -1) {          if (listen(fd, 128) == -1) {
                   saved_errno = errno;
                 close(fd);                  close(fd);
                 return (-1);                  errno = saved_errno;
                   goto fail;
         }          }
         setblocking(fd, 0);          setblocking(fd, 0);
   
         return (fd);          return (fd);
   
   fail:
           if (cause != NULL) {
                   xasprintf(cause, "error creating %s (%s)", socket_path,
                       strerror(errno));
           }
           return (-1);
 }  }
   
   /* Server error callback. */
   static enum cmd_retval
   server_start_error(struct cmdq_item *item, void *data)
   {
           char    *error = data;
   
           cmdq_error(item, "%s", error);
           free(error);
   
           return (CMD_RETURN_NORMAL);
   }
   
 /* Fork new server. */  /* Fork new server. */
 int  int
 server_start(struct tmuxproc *client, struct event_base *base, int lockfd,  server_start(struct tmuxproc *client, struct event_base *base, int lockfd,
Line 142 
Line 164 
         int              pair[2];          int              pair[2];
         struct job      *job;          struct job      *job;
         sigset_t         set, oldset;          sigset_t         set, oldset;
           struct client   *c;
           char            *cause = NULL;
   
         if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0)          if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0)
                 fatal("socketpair failed");                  fatal("socketpair failed");
Line 183 
Line 207 
   
         gettimeofday(&start_time, NULL);          gettimeofday(&start_time, NULL);
   
         server_fd = server_create_socket();          server_fd = server_create_socket(&cause);
         if (server_fd == -1)          if (server_fd != -1)
                 fatal("couldn't create socket");                  server_update_socket();
         server_update_socket();          c = server_client_create(pair[1]);
         server_client_create(pair[1]);  
   
         if (lockfd >= 0) {          if (lockfd >= 0) {
                 unlink(lockfile);                  unlink(lockfile);
Line 195 
Line 218 
                 close(lockfd);                  close(lockfd);
         }          }
   
           if (cause != NULL) {
                   cmdq_append(c, cmdq_get_callback(server_start_error, cause));
                   c->flags |= CLIENT_EXIT;
           }
   
         start_cfg();          start_cfg();
   
         server_add_accept(0);          server_add_accept(0);
Line 375 
Line 403 
                 break;                  break;
         case SIGUSR1:          case SIGUSR1:
                 event_del(&server_ev_accept);                  event_del(&server_ev_accept);
                 fd = server_create_socket();                  fd = server_create_socket(NULL);
                 if (fd != -1) {                  if (fd != -1) {
                         close(server_fd);                          close(server_fd);
                         server_fd = fd;                          server_fd = fd;

Legend:
Removed from v.1.177  
changed lines
  Added in v.1.178