version 1.126, 2015/06/04 11:43:51 |
version 1.127, 2015/06/05 18:01:12 |
|
|
* Main server functions. |
* Main server functions. |
*/ |
*/ |
|
|
/* Client list. */ |
|
struct clients clients; |
struct clients clients; |
struct clients dead_clients; |
|
|
|
int server_fd; |
int server_fd; |
int server_shutdown; |
int server_shutdown; |
|
|
RB_INIT(&windows); |
RB_INIT(&windows); |
RB_INIT(&all_window_panes); |
RB_INIT(&all_window_panes); |
TAILQ_INIT(&clients); |
TAILQ_INIT(&clients); |
TAILQ_INIT(&dead_clients); |
|
RB_INIT(&sessions); |
RB_INIT(&sessions); |
RB_INIT(&dead_sessions); |
RB_INIT(&dead_sessions); |
TAILQ_INIT(&session_groups); |
TAILQ_INIT(&session_groups); |
|
|
server_clean_dead(void) |
server_clean_dead(void) |
{ |
{ |
struct session *s, *s1; |
struct session *s, *s1; |
struct client *c, *c1; |
|
|
|
RB_FOREACH_SAFE(s, sessions, &dead_sessions, s1) { |
RB_FOREACH_SAFE(s, sessions, &dead_sessions, s1) { |
if (s->references != 0) |
if (s->references != 0) |
|
|
RB_REMOVE(sessions, &dead_sessions, s); |
RB_REMOVE(sessions, &dead_sessions, s); |
free(s->name); |
free(s->name); |
free(s); |
free(s); |
} |
|
|
|
TAILQ_FOREACH_SAFE(c, &dead_clients, entry, c1) { |
|
if (c->references != 0) |
|
continue; |
|
TAILQ_REMOVE(&dead_clients, c, entry); |
|
free(c); |
|
} |
} |
} |
} |
|
|