From b0968803b941c4c2c299f73306cdf24003aa7366 Mon Sep 17 00:00:00 2001 From: Jason Parker Date: Tue, 11 Dec 2007 21:58:26 +0000 Subject: We need to set the address we want to match against before we actually do the match.. Closes issue #11518. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@92421 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 99adad20b..19d3dba73 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -2200,15 +2200,17 @@ static void ast_sip_ouraddrfor(struct in_addr *them, struct sockaddr_in *us) * when passed to ast_apply_ha() so it does need to be remapped. * This fourth condition is checked later. */ - int want_remap = localaddr && - (externip.sin_addr.s_addr || stunaddr.sin_addr.s_addr) && - ast_apply_ha(localaddr, &theirs) == AST_SENSE_ALLOW ; + int want_remap; *us = internip; /* starting guess for the internal address */ /* now ask the system what would it use to talk to 'them' */ ast_ouraddrfor(them, &us->sin_addr); theirs.sin_addr = *them; + want_remap = localaddr && + (externip.sin_addr.s_addr || stunaddr.sin_addr.s_addr) && + ast_apply_ha(localaddr, &theirs) == AST_SENSE_ALLOW ; + if (want_remap && (!global_matchexterniplocally || !ast_apply_ha(localaddr, us)) ) { /* if we used externhost or stun, see if it is time to refresh the info */ -- cgit v1.2.3