Fix feature_attended_transfer test
authorKinsey Moore <kmoore@digium.com>
Thu, 15 Aug 2013 12:17:41 +0000 (12:17 +0000)
committerKinsey Moore <kmoore@digium.com>
Thu, 15 Aug 2013 12:17:41 +0000 (12:17 +0000)
The feature_attended_transfer test is failing due to Asterisk not
passing DTMF in the bridges created for internal attended transfers.
This sets the features initialization routine to set this flag by
default and adjusts the basic bridge and confbridge's use of the
bridging system accordingly as per Richard's suggestion instead of
adjusting this individual case. This change allows the necessary DTMF
to pass through the attended transfer bridge and complete the test
successfully.

Review: https://reviewboard.asterisk.org/r/2759/
(closes issue ASTERISK-22222)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396724 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_confbridge.c
main/bridge.c
main/features.c

index 0106097..7963122 100644 (file)
@@ -1587,6 +1587,8 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
        /* Set if DTMF should pass through for this user or not */
        if (ast_test_flag(&user.u_profile, USER_OPT_DTMF_PASS)) {
                user.features.dtmf_passthrough = 1;
+       } else {
+               user.features.dtmf_passthrough = 0;
        }
 
        /* Set dsp threshold values if present */
index bc983b1..b530795 100644 (file)
@@ -3204,6 +3204,8 @@ int ast_bridge_features_init(struct ast_bridge_features *features)
                return -1;
        }
 
+       features->dtmf_passthrough = 1;
+
        return 0;
 }
 
index 6585aec..3df0555 100644 (file)
@@ -797,9 +797,6 @@ int ast_bridge_channel_setup_features(struct ast_bridge_channel *bridge_channel)
 {
        int res = 0;
 
-       /* Always pass through any DTMF digits. */
-       bridge_channel->features->dtmf_passthrough = 1;
-
        res |= setup_bridge_features_builtin(bridge_channel->features, bridge_channel->chan);
        res |= setup_bridge_features_dynamic(bridge_channel->features, bridge_channel->chan);