app_confbridge: Make non-admin users join a muted conference muted.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 25 Jan 2016 21:48:04 +0000 (15:48 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 27 Jan 2016 22:46:20 +0000 (16:46 -0600)
ASTERISK-20987 #close
Reported by: hristo

Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38

apps/app_confbridge.c
configs/samples/confbridge.conf.sample

index 7a04952..9bda544 100644 (file)
@@ -1313,6 +1313,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
@@ -1730,12 +1737,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");
index 85de328..e738685 100644 (file)
@@ -340,10 +340,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