From 28b380c8b59d80ff2d027bde0c6b5ff63e775d9d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 26 Sep 2011 09:03:10 -0500 Subject: [PATCH] FS-3581 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index a0f1cac582..74de4aab3e 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -98,6 +98,7 @@ typedef struct private_object private_object_t; #define SOFIA_SIP_RESPONSE_HEADER_PREFIX "sip_rh_" #define SOFIA_SIP_RESPONSE_HEADER_PREFIX_T "~sip_rh_" #define SOFIA_SIP_BYE_HEADER_PREFIX "sip_bye_h_" +#define SOFIA_SIP_BYE_HEADER_PREFIX_T "~sip_bye_h_" #define SOFIA_SIP_PROGRESS_HEADER_PREFIX "sip_ph_" #define SOFIA_SIP_PROGRESS_HEADER_PREFIX_T "~sip_ph_" #define SOFIA_SIP_HEADER_PREFIX_T "~sip_h_" diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index e32b96cd01..fd06075d15 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -506,6 +506,7 @@ void sofia_handle_sip_i_bye(switch_core_session_t *session, int status, private_object_t *tech_pvt; char *extra_headers; const char *call_info = NULL; + const char *vval = NULL; #ifdef MANUAL_BYE int cause; char st[80] = ""; @@ -557,6 +558,18 @@ void sofia_handle_sip_i_bye(switch_core_session_t *session, int status, extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_BYE_HEADER_PREFIX); sofia_glue_set_extra_headers(channel, sip, SOFIA_SIP_BYE_HEADER_PREFIX); + if (!(vval = switch_channel_get_variable(channel, "sip_copy_custom_headers")) || switch_true(vval)) { + switch_core_session_t *nsession = NULL; + + switch_core_session_get_partner(session, &nsession); + + if (nsession) { + switch_ivr_transfer_variable(session, nsession, SOFIA_SIP_BYE_HEADER_PREFIX_T); + switch_core_session_rwunlock(nsession); + } + } + + switch_channel_hangup(channel, cause); nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS_MSG(de->data->e_msg), TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)), TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)), TAG_END());