From cab02bbc703be32238d31af7bb24e9832b305af5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 26 Aug 2011 13:51:41 -0500 Subject: [PATCH] fix logic determining which ip to use in contact on re-invites in recovery situations or when remote ip is unknown --- src/mod/endpoints/mod_sofia/sofia_glue.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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, ':');