]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
pass custom headers backwards over sofia
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 18 Feb 2011 16:13:52 +0000 (10:13 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Fri, 18 Feb 2011 16:13:52 +0000 (10:13 -0600)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c

index da9274631921acededadf7d93505ed65c791ec9e..31cd058dfa98c06c204db6e723f51c9da528737a 100644 (file)
@@ -96,8 +96,10 @@ typedef struct private_object private_object_t;
 #define SOFIA_MULTIPART_PREFIX_T "~sip_mp_"
 #define SOFIA_SIP_HEADER_PREFIX "sip_h_"
 #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_PROGRESS_HEADER_PREFIX "sip_ph_"
+#define SOFIA_SIP_PROGRESS_HEADER_PREFIX_T "~sip_ph_"
 #define SOFIA_SIP_HEADER_PREFIX_T "~sip_h_"
 #define SOFIA_DEFAULT_PORT "5060"
 #define SOFIA_DEFAULT_TLS_PORT "5061"
index e9d2cada2e9b4219a7c8082da3fea6df04c6899e..d1d6842ebfbc5103dfb91a758a7e823724c73b53 100644 (file)
@@ -4147,7 +4147,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
 
 
                if ((status == 180 || status == 183 || status == 200)) {
-                       const char *x_freeswitch_support;
+                       const char *x_freeswitch_support, *vval;
 
                        switch_channel_set_flag(channel, CF_MEDIA_ACK);
 
@@ -4163,6 +4163,20 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
 
                        sofia_glue_set_extra_headers(channel, sip, SOFIA_SIP_PROGRESS_HEADER_PREFIX);
 
+                       if (!(vval = switch_channel_get_variable(channel, "sip_copy_custom_headers")) || switch_true(vval)) {
+                               switch_core_session_t *other_session;
+                               
+                               if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) {
+                                       switch_ivr_transfer_variable(session, other_session, SOFIA_SIP_PROGRESS_HEADER_PREFIX_T);
+                                       if (status == 200) {
+                                               switch_ivr_transfer_variable(session, other_session, SOFIA_SIP_RESPONSE_HEADER_PREFIX_T);
+                                       }
+                                       switch_core_session_rwunlock(other_session);
+                               }
+                       }
+                       
+
+
                        sofia_update_callee_id(session, profile, sip, SWITCH_FALSE);
 
                        if (sofia_test_pflag(tech_pvt->profile, PFLAG_AUTOFIX_TIMING)) {