summaryrefslogtreecommitdiff
path: root/apps/confbridge/conf_state_multi_marked.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/confbridge/conf_state_multi_marked.c')
-rw-r--r--apps/confbridge/conf_state_multi_marked.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/apps/confbridge/conf_state_multi_marked.c b/apps/confbridge/conf_state_multi_marked.c
index 0c831f8b5..2739be55b 100644
--- a/apps/confbridge/conf_state_multi_marked.c
+++ b/apps/confbridge/conf_state_multi_marked.c
@@ -93,8 +93,15 @@ static void leave_marked(struct confbridge_user *user)
}
AST_LIST_TRAVERSE_SAFE_BEGIN(&user->conference->active_list, user_iter, list) {
- /* Kick ENDMARKED cbu_iters */
+ /* Kick ENDMARKED user_iters */
if (ast_test_flag(&user_iter->u_profile, USER_OPT_ENDMARKED)) {
+ if (ast_test_flag(&user_iter->u_profile, USER_OPT_WAITMARKED) &&
+ !ast_test_flag(&user_iter->u_profile, USER_OPT_MARKEDUSER)) {
+ AST_LIST_REMOVE_CURRENT(list);
+ user_iter->conference->activeusers--;
+ AST_LIST_INSERT_TAIL(&user_iter->conference->waiting_list, user_iter, list);
+ user_iter->conference->waitingusers++;
+ }
user_iter->kicked = 1;
ast_bridge_remove(user_iter->conference->bridge, user_iter->chan);
} else if (ast_test_flag(&user_iter->u_profile, USER_OPT_WAITMARKED) &&