diff --git a/res/res_features.c b/res/res_features.c index b55f1be5e0c568ed61f85babaec71e31d10eba9a..d03f7f3945a0b965f0ac6c48ce3c4e370b9ffa27 100755 --- a/res/res_features.c +++ b/res/res_features.c @@ -303,13 +303,14 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast transferer = chan; transferee = peer; } - - /* Use the non-macro context to transfer the call */ - if(strlen(transferer->macrocontext)) - transferer_real_context=transferer->macrocontext; - else - transferer_real_context=transferer->context; - + if(!(transferer_real_context=pbx_builtin_getvar_helper(transferee, "TRANSFER_CONTEXT")) && + !(transferer_real_context=pbx_builtin_getvar_helper(transferer, "TRANSFER_CONTEXT"))) { + /* Use the non-macro context to transfer the call */ + if(strlen(transferer->macrocontext)) + transferer_real_context=transferer->macrocontext; + else + transferer_real_context=transferer->context; + } /* Start autoservice on chan while we talk to the originator */ ast_autoservice_start(transferee);