Wake up any clients waiting with the wait-for command when the server

exits.
This commit is contained in:
nicm
2014-09-01 21:58:41 +00:00
parent 4e956d545a
commit 733cea8847
3 changed files with 42 additions and 1 deletions

View File

@ -217,16 +217,30 @@ server_loop(void)
int
server_should_shutdown(void)
{
u_int i;
struct client *c;
u_int i;
if (!options_get_number(&global_options, "exit-unattached")) {
if (!RB_EMPTY(&sessions))
return (0);
}
for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
c = ARRAY_ITEM(&clients, i);
if (c != NULL && c->session != NULL)
return (0);
}
/*
* No attached clients therefore want to exit - flush any waiting
* clients but don't actually exit until they've gone.
*/
cmd_wait_for_flush();
for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
if (ARRAY_ITEM(&clients, i) != NULL)
return (0);
}
return (1);
}
@ -238,6 +252,8 @@ server_send_shutdown(void)
struct session *s, *next_s;
u_int i;
cmd_wait_for_flush();
for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
c = ARRAY_ITEM(&clients, i);
if (c != NULL) {