From 3e51e5c7fd1f747ee67ec830cf3a78f54102e12b Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Mon, 25 Jan 2016 15:48:04 -0600 Subject: app_confbridge: Make non-admin users join a muted conference muted. ASTERISK-20987 #close Reported by: hristo Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38 --- apps/app_confbridge.c | 13 +++++++------ configs/samples/confbridge.conf.sample | 10 ++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index 5976d39db..9341440c8 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -1310,6 +1310,13 @@ static struct confbridge_conference *join_conference_bridge(const char *conferen ao2_lock(conference); + /* Determine if the new user should join the conference muted. */ + if (ast_test_flag(&user->u_profile, USER_OPT_STARTMUTED) + || (!ast_test_flag(&user->u_profile, USER_OPT_ADMIN) && conference->muted)) { + /* Set user level mute request. */ + 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 @@ -1727,12 +1734,6 @@ static int confbridge_exec(struct ast_channel *chan, const char *data) } } - /* If the caller should be joined already muted, set the flag before we join. */ - if (ast_test_flag(&user.u_profile, USER_OPT_STARTMUTED)) { - /* Set user level mute request. */ - user.muted = 1; - } - /* Look for a conference bridge matching the provided name */ if (!(conference = join_conference_bridge(args.conf_name, &user))) { pbx_builtin_setvar_helper(chan, "CONFBRIDGE_RESULT", "FAILED"); diff --git a/configs/samples/confbridge.conf.sample b/configs/samples/confbridge.conf.sample index 0419001eb..d0bdd6fd9 100644 --- a/configs/samples/confbridge.conf.sample +++ b/configs/samples/confbridge.conf.sample @@ -334,10 +334,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 -- cgit v1.2.3