version 1.127, 2015/06/05 18:01:12 |
version 1.128, 2015/06/05 18:18:32 |
|
|
void server_loop(void); |
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_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); |
|
|
RB_INIT(&all_window_panes); |
RB_INIT(&all_window_panes); |
TAILQ_INIT(&clients); |
TAILQ_INIT(&clients); |
RB_INIT(&sessions); |
RB_INIT(&sessions); |
RB_INIT(&dead_sessions); |
|
TAILQ_INIT(&session_groups); |
TAILQ_INIT(&session_groups); |
mode_key_init_trees(); |
mode_key_init_trees(); |
key_bindings_init(); |
key_bindings_init(); |
|
|
|
|
server_window_loop(); |
server_window_loop(); |
server_client_loop(); |
server_client_loop(); |
|
|
server_clean_dead(); |
|
} |
} |
} |
} |
|
|
|
|
|
|
RB_FOREACH_SAFE(s, sessions, &sessions, s1) |
RB_FOREACH_SAFE(s, sessions, &sessions, s1) |
session_destroy(s); |
session_destroy(s); |
} |
|
|
|
/* Free dead, unreferenced clients and sessions. */ |
|
void |
|
server_clean_dead(void) |
|
{ |
|
struct session *s, *s1; |
|
|
|
RB_FOREACH_SAFE(s, sessions, &dead_sessions, s1) { |
|
if (s->references != 0) |
|
continue; |
|
RB_REMOVE(sessions, &dead_sessions, s); |
|
free(s->name); |
|
free(s); |
|
} |
|
} |
} |
|
|
/* Update socket execute permissions based on whether sessions are attached. */ |
/* Update socket execute permissions based on whether sessions are attached. */ |