Only need to chmod +x or -x the socket when a client is created, lost or

attached, rather than every event loop.
pull/1/head
Nicholas Marriott 2009-11-11 08:00:42 +00:00
parent 15b9946a40
commit 2756437f4b
5 changed files with 7 additions and 6 deletions

View File

@ -101,6 +101,7 @@ cmd_attach_session_exec(struct cmd *self, struct cmd_ctx *ctx)
server_redraw_client(ctx->cmdclient); server_redraw_client(ctx->cmdclient);
} }
recalculate_sizes(); recalculate_sizes();
server_update_socket();
return (1); /* 1 means don't tell command client to exit */ return (1); /* 1 means don't tell command client to exit */
} }

View File

@ -277,6 +277,7 @@ cmd_new_session_exec(struct cmd *self, struct cmd_ctx *ctx)
} }
} }
recalculate_sizes(); recalculate_sizes();
server_update_socket();
return (!detached); /* 1 means don't tell command client to exit */ return (!detached); /* 1 means don't tell command client to exit */
} }

View File

@ -156,6 +156,7 @@ server_client_lost(struct client *c)
c->flags |= CLIENT_DEAD; c->flags |= CLIENT_DEAD;
recalculate_sizes(); recalculate_sizes();
server_update_socket();
} }
/* Process a single client event. */ /* Process a single client event. */

View File

@ -59,7 +59,6 @@ void server_loop(void);
int server_should_shutdown(void); int server_should_shutdown(void);
void server_send_shutdown(void); void server_send_shutdown(void);
void server_clean_dead(void); void server_clean_dead(void);
int server_update_socket(void);
void server_accept_callback(int, short, void *); void server_accept_callback(int, short, void *);
void server_signal_callback(int, short, void *); void server_signal_callback(int, short, void *);
void server_child_signal(void); void server_child_signal(void);
@ -105,6 +104,8 @@ server_create_socket(void)
if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
fatal("fcntl failed"); fatal("fcntl failed");
server_update_socket();
return (fd); return (fd);
} }
@ -208,8 +209,6 @@ void
server_loop(void) server_loop(void)
{ {
while (!server_should_shutdown()) { while (!server_should_shutdown()) {
server_update_socket();
event_loop(EVLOOP_ONCE); event_loop(EVLOOP_ONCE);
server_window_loop(); server_window_loop();
@ -288,7 +287,7 @@ server_clean_dead(void)
} }
/* Update socket execute permissions based on whether sessions are attached. */ /* Update socket execute permissions based on whether sessions are attached. */
int void
server_update_socket(void) server_update_socket(void)
{ {
struct session *s; struct session *s;
@ -312,8 +311,6 @@ server_update_socket(void)
else else
chmod(socket_path, S_IRUSR|S_IWUSR); chmod(socket_path, S_IRUSR|S_IWUSR);
} }
return (n);
} }
/* Callback for server socket. */ /* Callback for server socket. */

1
tmux.h
View File

@ -1557,6 +1557,7 @@ extern struct clients dead_clients;
int server_start(char *); int server_start(char *);
void server_signal_set(void); void server_signal_set(void);
void server_signal_clear(void); void server_signal_clear(void);
void server_update_socket(void);
/* server-client.c */ /* server-client.c */
void server_client_create(int); void server_client_create(int);