From 8e5012e4d6430d91ef65e09192300a64d94847ba Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 6 Dec 2012 10:44:47 -0600 Subject: [PATCH] FS-4913 try this patch --- src/mod/endpoints/mod_sofia/sofia.c | 10 ++++++++++ src/mod/endpoints/mod_sofia/sofia_glue.c | 8 ++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 161d245ea5..3b474b414f 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -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); } } diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index d24b3182c1..3228848ee1 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -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")); } }