dect
/
asterisk
Archived
13
0
Fork 0

OKAY - Only replace our IP address in the outgoing SIP messages if the actual source address is within the specified local network. (issue #7051 reported by Luke-Jr with mods by me)

git-svn-id: http://svn.digium.com/svn/asterisk/trunk@31050 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
file 2006-05-31 16:31:41 +00:00
parent 8f8a70f072
commit e625fbb2b0
1 changed files with 7 additions and 4 deletions

View File

@ -1456,11 +1456,16 @@ static int ast_sip_ouraddrfor(struct in_addr *them, struct in_addr *us)
* apply it to their address to see if we need to substitute our
* externip or can get away with our internal bindaddr
*/
struct sockaddr_in theirs;
struct sockaddr_in theirs, ours;
/* Get our local information */
ast_ouraddrfor(them, us);
theirs.sin_addr = *them;
ours.sin_addr = *us;
if (localaddr && externip.sin_addr.s_addr &&
ast_apply_ha(localaddr, &theirs)) {
ast_apply_ha(localaddr, &theirs) &&
!ast_apply_ha(localaddr, &ours)) {
if (externexpire && time(NULL) >= externexpire) {
struct ast_hostent ahp;
struct hostent *hp;
@ -1480,8 +1485,6 @@ static int ast_sip_ouraddrfor(struct in_addr *them, struct in_addr *us)
}
} else if (bindaddr.sin_addr.s_addr)
*us = bindaddr.sin_addr;
else
return ast_ouraddrfor(them, us);
return 0;
}