Author: mjordan Date: Sun Nov 16 21:07:07 2014 New Revision: 428079 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=428079 Log: app_confbridge: Don't play leader leaving prompt if no one will hear it
Consider the following: - A marked user in a conference - One or more end_marked only users in the conference When the marked users leaves, we will be in the conf_state_multi_marked state. This currently will traverse the users, kicking out any who have the end_marked flags. When they are kicked, a full ast_bridge_remove is immediately called on the channels. At this time, we also unilaterally set the need_prompt flag. When the need_prompt flag is set, we then playback a sound to the bridge informing everyone that the leader has left; however, no one is left in the bridge. This causes some odd behaviour for the end_marked users - they are stuck waiting for the bridge to be unlocked. This results in them waiting for 5 or 6 seconds of dead air before hearing that they've been kicked. Unfortunately, we do have to keep the bridge locked while we're playing back the 'leader-has-left' prompt. If there are any wait_marked users in the conference, this behaviour can't be easily changed - but we do make the case of the end_marked users better with this patch. Review: https://reviewboard.asterisk.org/r/4184/ ASTERISK-24522 #close Reported by: Matt Jordan ........ Merged revisions 428077 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 428078 from http://svn.asterisk.org/svn/asterisk/branches/12 Modified: branches/13/ (props changed) branches/13/apps/confbridge/conf_state_multi_marked.c Propchange: branches/13/ ------------------------------------------------------------------------------ Binary property 'branch-12-merged' - no diff available. Modified: branches/13/apps/confbridge/conf_state_multi_marked.c URL: http://svnview.digium.com/svn/asterisk/branches/13/apps/confbridge/conf_state_multi_marked.c?view=diff&rev=428079&r1=428078&r2=428079 ============================================================================== --- branches/13/apps/confbridge/conf_state_multi_marked.c (original) +++ branches/13/apps/confbridge/conf_state_multi_marked.c Sun Nov 16 21:07:07 2014 @@ -86,8 +86,6 @@ conf_remove_user_marked(user->conference, user); if (user->conference->markedusers == 0) { - need_prompt = 1; - AST_LIST_TRAVERSE_SAFE_BEGIN(&user->conference->active_list, user_iter, list) { /* Kick ENDMARKED cbu_iters */ if (ast_test_flag(&user_iter->u_profile, USER_OPT_ENDMARKED) && !user_iter->kicked) { @@ -103,6 +101,8 @@ ast_bridge_remove(user_iter->conference->bridge, user_iter->chan); } else if (ast_test_flag(&user_iter->u_profile, USER_OPT_WAITMARKED) && !ast_test_flag(&user_iter->u_profile, USER_OPT_MARKEDUSER)) { + need_prompt = 1; + AST_LIST_REMOVE_CURRENT(list); user_iter->conference->activeusers--; AST_LIST_INSERT_TAIL(&user_iter->conference->waiting_list, user_iter, list); -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits
