From 4dba976a7f3b6054b7d633b56e248bf31f4fc8b3 Mon Sep 17 00:00:00 2001
From: Anthony Minessale II <anthmct@yahoo.com>
Date: Sat, 24 Jul 2004 02:29:40 +0000
Subject: [PATCH] added support to be able to set the channel var
 TRANSFER_CONTEXT so when a #transfer is executed it uses ${TRANSFER_CONTEXT}
 from transferree else from transferer else it acts as always -anthm

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3499 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 res/res_features.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/res/res_features.c b/res/res_features.c
index b55f1be5e0..d03f7f3945 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);
-- 
GitLab