=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server-fn.c,v retrieving revision 1.134 retrieving revision 1.135 diff -c -r1.134 -r1.135 *** src/usr.bin/tmux/server-fn.c 2023/09/01 13:48:54 1.134 --- src/usr.bin/tmux/server-fn.c 2024/02/13 08:10:23 1.135 *************** *** 1,4 **** ! /* $OpenBSD: server-fn.c,v 1.134 2023/09/01 13:48:54 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: server-fn.c,v 1.135 2024/02/13 08:10:23 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 454,460 **** void server_check_unattached(void) { ! struct session *s; /* * If any sessions are no longer attached and have destroy-unattached --- 454,461 ---- void server_check_unattached(void) { ! struct session *s; ! struct session_group *sg; /* * If any sessions are no longer attached and have destroy-unattached *************** *** 463,470 **** RB_FOREACH(s, sessions, &sessions) { if (s->attached != 0) continue; ! if (options_get_number (s->options, "destroy-unattached")) ! session_destroy(s, 1, __func__); } } --- 464,486 ---- RB_FOREACH(s, sessions, &sessions) { if (s->attached != 0) continue; ! switch (options_get_number(s->options, "destroy-unattached")) { ! 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__); } }