]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4913 try this patch
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 6 Dec 2012 16:44:47 +0000 (10:44 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 6 Dec 2012 16:44:52 +0000 (10:44 -0600)
src/mod/endpoints/mod_sofia/sofia.c
src/mod/endpoints/mod_sofia/sofia_glue.c

index 161d245ea5792430788731b8ba82f66cc81f6b4e..3b474b414f790c57915fc3b9e37a74dc3c37172c 100644 (file)
@@ -269,6 +269,11 @@ static void extract_header_vars(sofia_profile_t *profile, sip_t const *sip,
                        if (p != sip->sip_from->a_display) free(p);
                        if ((full = sip_header_as_string(nh->nh_home, (void *) sip->sip_from))) {
                                switch_channel_set_variable(channel, "sip_full_from", full);
+
+                               if (!switch_channel_get_variable_dup(channel, "sip_orig_full_from", SWITCH_FALSE, -1)) {
+                                       switch_channel_set_variable(channel, "sip_orig_full_from", full);
+                               }
+
                                su_free(nh->nh_home, full);
                        }
                }
@@ -284,6 +289,11 @@ static void extract_header_vars(sofia_profile_t *profile, sip_t const *sip,
 
                        if ((full = sip_header_as_string(nh->nh_home, (void *) sip->sip_to))) {
                                switch_channel_set_variable(channel, "sip_full_to", full);
+
+                               if (!switch_channel_get_variable_dup(channel, "sip_orig_full_to", SWITCH_FALSE, -1)) {
+                                       switch_channel_set_variable(channel, "sip_orig_full_to", full);
+                               }
+                               
                                su_free(nh->nh_home, full);
                        }
                }
index d24b3182c1d42300fc67c5f1beb95b34be0b8348..3228848ee106abb8ba935d0db3703196b82ec909 100644 (file)
@@ -5863,8 +5863,8 @@ int sofia_recover_callback(switch_core_session_t *session)
        if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                int break_rfc = switch_true(switch_channel_get_variable(channel, "sip_recovery_break_rfc"));
                tech_pvt->dest = switch_core_session_sprintf(session, "sip:%s", switch_channel_get_variable(channel, "sip_req_uri"));
-               switch_channel_set_variable(channel, "sip_handle_full_from", switch_channel_get_variable(channel, break_rfc ? "sip_full_to" : "sip_full_from"));
-               switch_channel_set_variable(channel, "sip_handle_full_to", switch_channel_get_variable(channel, break_rfc ? "sip_full_from" : "sip_full_to"));
+               switch_channel_set_variable(channel, "sip_handle_full_from", switch_channel_get_variable(channel, break_rfc ? "sip_orig_full_to" : "sip_orig_full_from"));
+               switch_channel_set_variable(channel, "sip_handle_full_to", switch_channel_get_variable(channel, break_rfc ? "sip_orig_full_from" : "sip_orig_full_to"));
        } else {
                tech_pvt->redirected = switch_core_session_sprintf(session, "sip:%s", switch_channel_get_variable(channel, "sip_contact_uri"));
 
@@ -5878,11 +5878,11 @@ int sofia_recover_callback(switch_core_session_t *session)
                tech_pvt->dest = switch_core_session_sprintf(session, "sip:%s", switch_channel_get_variable(channel, "sip_from_uri"));
 
                if (!switch_channel_get_variable_dup(channel, "sip_handle_full_from", SWITCH_FALSE, -1)) {
-                       switch_channel_set_variable(channel, "sip_handle_full_from", switch_channel_get_variable(channel, "sip_full_to"));
+                       switch_channel_set_variable(channel, "sip_handle_full_from", switch_channel_get_variable(channel, "sip_orig_full_to"));
                }
 
                if (!switch_channel_get_variable_dup(channel, "sip_handle_full_to", SWITCH_FALSE, -1)) {
-                       switch_channel_set_variable(channel, "sip_handle_full_to", switch_channel_get_variable(channel, "sip_full_from"));
+                       switch_channel_set_variable(channel, "sip_handle_full_to", switch_channel_get_variable(channel, "sip_orig_full_from"));
                }
        }