diff -Nur asterisk-24742/UPGRADE.txt asterisk-new/UPGRADE.txt --- asterisk-24742/UPGRADE.txt 2006-05-04 13:29:44.000000000 -0500 +++ asterisk-new/UPGRADE.txt 2006-05-04 13:34:07.000000000 -0500 @@ -37,7 +37,13 @@ * 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, use the transferee variable. If not set in any channel, it will + attempt to use the last non macro context. If not possible, will default + to the current context + Command Line Interface: * 'show channels concise', designed to be used by applications that will parse @@ -121,6 +127,9 @@ * OSP applications exports several new variables, ${OSPINHANDLE}, ${OSPOUTHANDLE}, ${OSPINTOKEN}, ${OSPOUTTOKEN}, ${OSPCALLING}, ${OSPINTIMELIMIT}, and ${OSPOUTTIMELIMIT} + +* builtin transfer functionality set the variable TRANSFERERNAME in the new + created channel. This variables holds the channel name of the transferer. Functions: diff -Nur asterisk-24742/res/res_features.c asterisk-new/res/res_features.c --- asterisk-24742/res/res_features.c 2006-05-04 13:29:33.000000000 -0500 +++ asterisk-new/res/res_features.c 2006-05-04 13:34:15.000000000 -0500 @@ -522,9 +522,9 @@ 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)) @@ -996,6 +996,7 @@ 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;