Author: anthm Date: Mon May 21 17:44:35 2007 New Revision: 5208 Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Log: make contact: match the to: in 200OK for the sake of interop Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Mon May 21 17:44:35 2007 @@ -317,7 +317,7 @@ } nua_respond(tech_pvt->nh, SIP_200_OK, - SIPTAG_CONTACT_STR(tech_pvt->profile->url), + SIPTAG_CONTACT_STR(tech_pvt->to_uri), SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), SOATAG_AUDIO_AUX("cn telephone-event"), NUTAG_INCLUDE_EXTRA_SDP(1), TAG_END()); } @@ -680,7 +680,7 @@ sofia_glue_set_local_sdp(tech_pvt, ip, atoi(port), msg->string_arg, 1); } nua_respond(tech_pvt->nh, SIP_200_OK, - SIPTAG_CONTACT_STR(tech_pvt->profile->url), + SIPTAG_CONTACT_STR(tech_pvt->to_uri), SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), SOATAG_AUDIO_AUX("cn telephone-event"), NUTAG_INCLUDE_EXTRA_SDP(1), TAG_END()); switch_channel_mark_answered(channel); } Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Mon May 21 17:44:35 2007 @@ -1812,7 +1812,13 @@ } if (sip->sip_to && sip->sip_to->a_url) { + char *val; url_set_chanvars(session, sip->sip_to->a_url, sip_to); + if ((val = switch_channel_get_variable(channel, "sip_to_uri"))) { + tech_pvt->to_uri = switch_core_session_sprintf(session, "sip:%s", val); + } else { + tech_pvt->to_uri = tech_pvt->profile->url; + } } if (sip->sip_contact && sip->sip_contact->m_url) {