From afcb1514725b96a1935755d46afc50c67974d594 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Mon, 25 Jan 2016 15:48:04 -0600 Subject: [PATCH] app_confbridge: Make non-admin users join a muted conference muted. ASTERISK-20987 #close Reported by: hristo Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38 --- apps/app_confbridge.c | 14 ++++++++------ configs/confbridge.conf.sample | 10 ++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index cd4c81424a..825febff8f 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -1241,6 +1241,14 @@ static struct conference_bridge *join_conference_bridge(const char *name, struct ao2_lock(conference_bridge); + /* Determine if the new user should join the conference muted. */ + if (ast_test_flag(&conference_bridge_user->u_profile, USER_OPT_STARTMUTED) + || (!ast_test_flag(&conference_bridge_user->u_profile, USER_OPT_ADMIN) + && conference_bridge->muted)) { + /* Set user level mute request. */ + conference_bridge_user->muted = 1; + } + /* * Suspend any MOH until the user actually joins the bridge of * the conference. This way any pre-join file playback does not @@ -1659,12 +1667,6 @@ static int confbridge_exec(struct ast_channel *chan, const char *data) conf_name); } - /* If the caller should be joined already muted, set the flag before we join. */ - if (ast_test_flag(&conference_bridge_user.u_profile, USER_OPT_STARTMUTED)) { - /* Set user level mute request. */ - conference_bridge_user.muted = 1; - } - /* Look for a conference bridge matching the provided name */ if (!(conference_bridge = join_conference_bridge(args.conf_name, &conference_bridge_user))) { res = -1; diff --git a/configs/confbridge.conf.sample b/configs/confbridge.conf.sample index 9e90e61168..d4a5865678 100644 --- a/configs/confbridge.conf.sample +++ b/configs/confbridge.conf.sample @@ -323,10 +323,12 @@ type=bridge ; upon release of the video src. ; admin_toggle_mute_participants ; This action allows an administrator to toggle the mute - ; state for all non-admins within a conference. All - ; admin users are unaffected by this option. Note that all - ; users, regardless of their admin status, are notified - ; that the conference is muted. + ; state for all non-admins within a conference. + ; Subsequent non-admins joining a muted conference will + ; start muted. All admin users are unaffected by this + ; option. Note that all users, regardless of their admin + ; status, are notified that the conference is muted when + ; the state is toggled. ; participant_count ; This action plays back the number of participants currently ; in a conference -- 2.47.2