From: Anthony Minessale Date: Fri, 26 Aug 2011 18:51:41 +0000 (-0500) Subject: fix logic determining which ip to use in contact on re-invites in recovery situations... X-Git-Tag: v1.2-rc1~51^2~216 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cab02bbc703be32238d31af7bb24e9832b305af5;p=thirdparty%2Ffreeswitch.git fix logic determining which ip to use in contact on re-invites in recovery situations or when remote ip is unknown --- diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index eeffde9591..e91492b53e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -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, ':');