diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 4634f9f9bd..28d6008a86 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -239,21 +239,25 @@ static void extract_header_vars(sofia_profile_t *profile, sip_t const *sip, switch_stream_handle_t stream = { 0 }; int x = 0; - if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { - SWITCH_STANDARD_STREAM(stream); + SWITCH_STANDARD_STREAM(stream); - for(vp = sip->sip_via; vp; vp = vp->v_next) { - char *v = sip_header_as_string(nh->nh_home, (void *) vp); - - stream.write_function(&stream, x == 0 ? "%s" : ",%s", v); - su_free(nh->nh_home, v); - - x++; - } + for(vp = sip->sip_via; vp; vp = vp->v_next) { + char *v = sip_header_as_string(nh->nh_home, (void *) vp); - switch_channel_set_variable(channel, "sip_recover_via", (char *)stream.data); - free(stream.data); + stream.write_function(&stream, x == 0 ? "%s" : ",%s", v); + su_free(nh->nh_home, v); + + x++; } + + switch_channel_set_variable(channel, "sip_full_via", (char *)stream.data); + + if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { + switch_channel_set_variable(channel, "sip_recover_via", (char *)stream.data); + } + + free(stream.data); + } if (sip->sip_from) {