diff options
-rw-r--r-- | apps/confbridge/conf_state_multi_marked.c | 9 |
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) && |