]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-3581 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 26 Sep 2011 14:03:10 +0000 (09:03 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 26 Sep 2011 14:03:10 +0000 (09:03 -0500)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c

index a0f1cac5828275e98339cffabeb1039c834909aa..74de4aab3edb991d5812e76f25c97449ce8ca720 100644 (file)
@@ -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_"
index e32b96cd01a06734ae3501905d7f1a6cbcbd6328..fd06075d15eb918a666a9fe99d9610d48dbdd3e5 100644 (file)
@@ -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());