From 097b9dc2cf13b06e023a28a5deae89cd37ed0e9b Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Wed, 12 Dec 2007 17:46:14 +0000 Subject: [PATCH] Correctly detect where a dynamic feature was activated. Before this patch, 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 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/res/res_features.c b/res/res_features.c index 7572aefa2a..1bac49ce0e 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -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++) {