fix logic determining which ip to use in contact on re-invites in recovery situations or when remote ip is unknown

This commit is contained in:
Anthony Minessale 2011-08-26 13:51:41 -05:00
parent e518bb9556
commit cab02bbc70
1 changed files with 6 additions and 6 deletions

View File

@ -2109,14 +2109,14 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
if (zstr(tech_pvt->invite_contact)) {
const char *contact;
if ((contact = switch_channel_get_variable(channel, "sip_contact_user"))) {
char *ip_addr;
char *ip_addr = tech_pvt->profile->sipip;
char *ipv6;
if (!zstr(tech_pvt->remote_ip) && sofia_glue_check_nat(tech_pvt->profile, tech_pvt->remote_ip)) {
ip_addr = (switch_check_network_list_ip(tech_pvt->remote_ip, tech_pvt->profile->local_network))
? tech_pvt->profile->sipip : tech_pvt->profile->extsipip;
} else {
ip_addr = tech_pvt->profile->extsipip ? tech_pvt->profile->extsipip : tech_pvt->profile->sipip;
if ( ( tech_pvt->profile->extsipip && !zstr(tech_pvt->remote_ip) ) &&
( sofia_glue_check_nat(tech_pvt->profile, tech_pvt->remote_ip) ||
switch_check_network_list_ip(tech_pvt->remote_ip, tech_pvt->profile->local_network)
) ) {
ip_addr = tech_pvt->profile->extsipip;
}
ipv6 = strchr(ip_addr, ':');