]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Correctly detect where a dynamic feature was activated. Before this patch,
authorMark Michelson <mmichelson@digium.com>
Wed, 12 Dec 2007 17:46:14 +0000 (17:46 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 12 Dec 2007 17:46:14 +0000 (17:46 +0000)
the channel which initiated the bridge was always assumed to have been the one
which activated the dynamic feature. This patch corrects this.

(closes issue #11529, reported and patched by nic_bellamy)

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

res/res_features.c

index 7572aefa2a0afced4f23662ad740f9024ea01605..1bac49ce0ed4256868baed117df7d4af67c706f0 100644 (file)
@@ -1059,15 +1059,18 @@ static int ast_feature_interpret(struct ast_channel *chan, struct ast_channel *p
        struct ast_flags features;
        int res = FEATURE_RETURN_PASSDIGITS;
        struct ast_call_feature *feature;
-       const char *dynamic_features=pbx_builtin_getvar_helper(chan,"DYNAMIC_FEATURES");
+       char *dynamic_features;
        char *tmp, *tok;
 
-       if (sense == FEATURE_SENSE_CHAN)
+       if (sense == FEATURE_SENSE_CHAN) {
                ast_copy_flags(&features, &(config->features_caller), AST_FLAGS_ALL);   
-       else
+               dynamic_features = pbx_builtin_getvar_helper(chan, "DYNAMIC_FEATURES");
+       } else {
                ast_copy_flags(&features, &(config->features_callee), AST_FLAGS_ALL);   
+               dynamic_features = pbx_builtin_getvar_helper(peer, "DYNAMIC_FEATURES");
+       }
        if (option_debug > 2)
-               ast_log(LOG_DEBUG, "Feature interpret: chan=%s, peer=%s, sense=%d, features=%d\n", chan->name, peer->name, sense, features.flags);
+               ast_log(LOG_DEBUG, "Feature interpret: chan=%s, peer=%s, sense=%d, features=%d dynamic=%s\n", chan->name, peer->name, sense, features.flags, dynamic_features);
 
        ast_rwlock_rdlock(&features_lock);
        for (x = 0; x < FEATURES_COUNT; x++) {