summaryrefslogtreecommitdiffstats
path: root/main/asterisk/ASTERISK-21859.patch
blob: 93437f527b51eff8445ee01a39d3f3b7b423dc3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
https://issues.asterisk.org/jira/browse/ASTERISK-21859
https://issues.asterisk.org/jira/browse/ASTERISK-22454
https://issues.asterisk.org/jira/browse/ASTERISK-22581

Index: asterisk/apps/confbridge/conf_state_multi_marked.c
===================================================================
diff -u -N -r380892 -r399222
--- asterisk/apps/confbridge/conf_state_multi_marked.c	(.../conf_state_multi_marked.c)	(revision 380892)
+++ asterisk/apps/confbridge/conf_state_multi_marked.c	(.../conf_state_multi_marked.c)	(revision 399222)
@@ -95,6 +95,13 @@
 		AST_LIST_TRAVERSE_SAFE_BEGIN(&cbu->conference_bridge->active_list, cbu_iter, list) {
 			/* Kick ENDMARKED cbu_iters */
 			if (ast_test_flag(&cbu_iter->u_profile, USER_OPT_ENDMARKED)) {
+				if (ast_test_flag(&cbu_iter->u_profile, USER_OPT_WAITMARKED) &&
+						  !ast_test_flag(&cbu_iter->u_profile, USER_OPT_MARKEDUSER)) {
+					AST_LIST_REMOVE_CURRENT(list);
+					cbu_iter->conference_bridge->activeusers--;
+					AST_LIST_INSERT_TAIL(&cbu_iter->conference_bridge->waiting_list, cbu_iter, list);
+					cbu_iter->conference_bridge->waitingusers++;
+				}
 				cbu_iter->kicked = 1;
 				ast_bridge_remove(cbu_iter->conference_bridge->bridge, cbu_iter->chan);
 			} else if (ast_test_flag(&cbu_iter->u_profile, USER_OPT_WAITMARKED) &&