aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-26 17:59:29 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-26 17:59:29 +0000
commitce4f89599645c11c69ef90d56bc068c6b81bafa5 (patch)
treea1f1f76c900ab84c23e5c0e3e5667dfdfc8e38df
parentcb0181db21df7226ddf8e83c092f188aee7a2dc0 (diff)
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
-rw-r--r--UPGRADE.txt11
-rw-r--r--res/res_features.c5
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;