[asterisk-commits] mjordan: branch 11 r428077 - /branches/11/apps/confbridge/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Nov 16 21:05:51 CST 2014


Author: mjordan
Date: Sun Nov 16 21:05:44 2014
New Revision: 428077

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=428077
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

Modified:
    branches/11/apps/confbridge/conf_state_multi_marked.c

Modified: branches/11/apps/confbridge/conf_state_multi_marked.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/apps/confbridge/conf_state_multi_marked.c?view=diff&rev=428077&r1=428076&r2=428077
==============================================================================
--- branches/11/apps/confbridge/conf_state_multi_marked.c (original)
+++ branches/11/apps/confbridge/conf_state_multi_marked.c Sun Nov 16 21:05:44 2014
@@ -85,8 +85,6 @@
 	conf_remove_user_marked(cbu->conference_bridge, cbu);
 
 	if (cbu->conference_bridge->markedusers == 0) {
-		need_prompt = 1;
-
 		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) && !cbu_iter->kicked) {
@@ -101,6 +99,8 @@
 				ast_bridge_remove(cbu_iter->conference_bridge->bridge, cbu_iter->chan);
 			} else if (ast_test_flag(&cbu_iter->u_profile, USER_OPT_WAITMARKED)
 				&& !ast_test_flag(&cbu_iter->u_profile, USER_OPT_MARKEDUSER)) {
+				need_prompt = 1;
+
 				AST_LIST_REMOVE_CURRENT(list);
 				cbu_iter->conference_bridge->activeusers--;
 				AST_LIST_INSERT_TAIL(&cbu_iter->conference_bridge->waiting_list, cbu_iter, list);




More information about the asterisk-commits mailing list