Index: channels/chan_sip.c =================================================================== --- channels/chan_sip.c (revision 181654) +++ channels/chan_sip.c (working copy) @@ -12322,6 +12340,10 @@ if (p->owner) { pbx_builtin_setvar_helper(p->owner, "SIPREDIRECTURI", uri); pbx_builtin_setvar_helper(p->owner, "SIPDOMAIN", domain); + if (!ast_strlen_zero(p->peername)) + pbx_builtin_setvar_helper(p->owner, "FORWARDER_SIPPEER", p->peername); + else + pbx_builtin_setvar_helper(p->owner, "FORWARDER_SIPPEER", p->username); ast_string_field_set(p->owner, call_forward, s); } } @@ -15238,6 +15260,10 @@ /* Attended transfer to remote host, prepare headers for the INVITE */ if (p->refer->referred_by) pbx_builtin_setvar_helper(current.chan2, "_SIPTRANSFER_REFERER", p->refer->referred_by); + if (!ast_strlen_zero(p->peername)) + pbx_builtin_setvar_helper(current.chan2, "TRANSFERER_SIPPEER", p->peername); + else + pbx_builtin_setvar_helper(current.chan2, "TRANSFERER_SIPPEER", p->username); } /* Generate a Replaces string to be used in the INVITE during attended transfer */ if (p->refer->replaces_callid && !ast_strlen_zero(p->refer->replaces_callid)) { Index: apps/app_dial.c =================================================================== --- apps/app_dial.c (revision 181654) +++ apps/app_dial.c (working copy) @@ -489,6 +489,7 @@ char *stuff; char *tech; int cause; + const char *forward_sippeer = pbx_builtin_getvar_helper(c, "FORWARDER_SIPPEER"); ast_copy_string(tmpchan, c->call_forward, sizeof(tmpchan)); if ((stuff = strchr(tmpchan, '/'))) { @@ -516,6 +517,7 @@ ast_channel_make_compatible(o->chan, in); ast_channel_inherit_variables(in, o->chan); ast_channel_datastore_inherit(in, o->chan); + pbx_builtin_setvar_helper(o->chan, "FORWARDER_SIPPEER", forward_sippeer); } else ast_log(LOG_NOTICE, "Unable to create local channel for call forward to '%s/%s' (cause = %d)\n", tech, stuff, cause); }