]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_confbridge: Fix bug - users with startmuted set don't start muted 19/2119/1
authorJonathan Rose <jrose@digium.com>
Thu, 20 Mar 2014 22:46:11 +0000 (22:46 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 27 Jan 2016 23:22:03 +0000 (17:22 -0600)
(closes issue ASTERISK-23461)
Reported by: Chico Manobela
Review: https://reviewboard.asterisk.org/r/3373/

Cherry-picked to support ASTERISK-20987

Change-Id: I69f41779d2ae39b69ab7e7bd93d60eaccfbe3eda

apps/app_confbridge.c

index ef27a2eefcf9f2a58c162330af84281bbd60c5a8..f8b1325e668b52887ee3a438b101639151fc2f68 100644 (file)
@@ -984,6 +984,13 @@ void conf_update_user_mute(struct conference_bridge_user *user)
                ast_channel_name(user->chan), mute_effective ? "muted" : "unmuted",
                mute_user, mute_system);
        user->features.mute = mute_effective;
+       ast_test_suite_event_notify("CONF_MUTE_UPDATE",
+               "Mode: %s\r\n"
+               "Conference: %s\r\n"
+               "Channel: %s",
+               mute_effective ? "muted" : "unmuted",
+               user->b_profile.name,
+               ast_channel_name(user->chan));
 }
 
 void conf_moh_stop(struct conference_bridge_user *user)
@@ -1664,6 +1671,12 @@ 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; /* invalid PIN */
@@ -1674,12 +1687,6 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
        volume_adjustments[0] = ast_audiohook_volume_get(chan, AST_AUDIOHOOK_DIRECTION_READ);
        volume_adjustments[1] = ast_audiohook_volume_get(chan, AST_AUDIOHOOK_DIRECTION_WRITE);
 
-       /* If the caller should be joined already muted, make it so */
-       if (ast_test_flag(&conference_bridge_user.u_profile, USER_OPT_STARTMUTED)) {
-               /* Set user level mute request. */
-               conference_bridge_user.muted = 1;
-       }
-
        if (ast_test_flag(&conference_bridge_user.u_profile, USER_OPT_DROP_SILENCE)) {
                conference_bridge_user.tech_args.drop_silence = 1;
        }