From ce4f89599645c11c69ef90d56bc068c6b81bafa5 Mon Sep 17 00:00:00 2001 From: file Date: Fri, 26 May 2006 17:59:29 +0000 Subject: attended transfer use transferer context first and set who is transfering at the beginning (issue #6752 reported by moy -- minor mods done by myself) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@30548 f38db490-d61c-443f-a65b-d21fe96a405b --- UPGRADE.txt | 11 ++++++++++- res/res_features.c | 5 +++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/UPGRADE.txt b/UPGRADE.txt index c0e32e779..038e0746c 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -37,7 +37,13 @@ PBX Core: * The (very old and undocumented) ability to use BYEXTENSION for dialing instead of ${EXTEN} has been removed. - + +* Builtin (res_features) transfer functionality attempts to use the context + defined in TRANSFER_CONTEXT variable of the transferer channel first. If + not set, it uses the transferee variable. If not set in any channel, it will + attempt to use the last non macro context. If not possible, it will default + to the current context. + Command Line Interface: * 'show channels concise', designed to be used by applications that will parse @@ -158,6 +164,9 @@ Variables: * OSP applications exports several new variables, ${OSPINHANDLE}, ${OSPOUTHANDLE}, ${OSPINTOKEN}, ${OSPOUTTOKEN}, ${OSPCALLING}, ${OSPINTIMELIMIT}, and ${OSPOUTTIMELIMIT} + +* Builtin transfer functionality sets the variable ${TRANSFERERNAME} in the new + created channel. This variables holds the channel name of the transferer. Functions: diff --git a/res/res_features.c b/res/res_features.c index 35c203451..20dc85090 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -563,9 +563,9 @@ static int finishup(struct ast_channel *chan) static const char *real_ctx(struct ast_channel *transferer, struct ast_channel *transferee) { - const char *s = pbx_builtin_getvar_helper(transferee, "TRANSFER_CONTEXT"); + const char *s = pbx_builtin_getvar_helper(transferer, "TRANSFER_CONTEXT"); if (ast_strlen_zero(s)) - s = pbx_builtin_getvar_helper(transferer, "TRANSFER_CONTEXT"); + s = pbx_builtin_getvar_helper(transferee, "TRANSFER_CONTEXT"); if (ast_strlen_zero(s)) /* Use the non-macro context to transfer the call XXX ? */ s = transferer->macrocontext; if (ast_strlen_zero(s)) @@ -1039,6 +1039,7 @@ static struct ast_channel *ast_feature_request_and_dial(struct ast_channel *call if ((chan = ast_request(type, format, data, &cause))) { ast_set_callerid(chan, cid_num, cid_name, cid_num); ast_channel_inherit_variables(caller, chan); + pbx_builtin_setvar_helper(chan, "TRANSFERERNAME", caller->name); if (!ast_call(chan, data, timeout)) { struct timeval started; int x, len = 0; -- cgit v1.2.3