version 1.134, 2023/09/01 13:48:54 |
version 1.135, 2024/02/13 08:10:23 |
|
|
void |
void |
server_check_unattached(void) |
server_check_unattached(void) |
{ |
{ |
struct session *s; |
struct session *s; |
|
struct session_group *sg; |
|
|
/* |
/* |
* If any sessions are no longer attached and have destroy-unattached |
* If any sessions are no longer attached and have destroy-unattached |
|
|
RB_FOREACH(s, sessions, &sessions) { |
RB_FOREACH(s, sessions, &sessions) { |
if (s->attached != 0) |
if (s->attached != 0) |
continue; |
continue; |
if (options_get_number (s->options, "destroy-unattached")) |
switch (options_get_number(s->options, "destroy-unattached")) { |
session_destroy(s, 1, __func__); |
case 0: /* off */ |
|
continue; |
|
case 1: /* on */ |
|
break; |
|
case 2: /* keep-last */ |
|
sg = session_group_contains(s); |
|
if (sg == NULL || session_group_count(sg) <= 1) |
|
continue; |
|
break; |
|
case 3: /* keep-group */ |
|
sg = session_group_contains(s); |
|
if (sg != NULL && session_group_count(sg) == 1) |
|
continue; |
|
break; |
|
} |
|
session_destroy(s, 1, __func__); |
} |
} |
} |
} |
|
|