summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-01-09 01:15:43 +0000
committerMark Spencer <markster@digium.com>2005-01-09 01:15:43 +0000
commit0748d4716440e25c745ed77da91812cf8a4db3f6 (patch)
tree74e4d87aaf729d63319cc69727ef73626203124f /channels
parent2d8160ecd53d5a1414855fa792214c8162c156d8 (diff)
Minor externip fixes (bug #3262)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4722 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rwxr-xr-xchannels/chan_sip.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 23b65087c..fdfec45e7 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -648,19 +648,19 @@ static int ast_sip_ouraddrfor(struct in_addr *them, struct in_addr *us)
*/
struct sockaddr_in theirs;
theirs.sin_addr = *them;
- if (externexpire && (time(NULL) >= externexpire)) {
- struct ast_hostent ahp;
- struct hostent *hp;
- time(&externexpire);
- externexpire += externrefresh;
- if ((hp = ast_gethostbyname(externhost, &ahp))) {
- memcpy(&externip.sin_addr, hp->h_addr, sizeof(externip));
- } else
- ast_log(LOG_NOTICE, "Warning: Re-lookup of '%s' failed!\n", externhost);
- }
if (localaddr && externip.sin_addr.s_addr &&
ast_apply_ha(localaddr, &theirs)) {
char iabuf[INET_ADDRSTRLEN];
+ if (externexpire && (time(NULL) >= externexpire)) {
+ struct ast_hostent ahp;
+ struct hostent *hp;
+ time(&externexpire);
+ externexpire += externrefresh;
+ if ((hp = ast_gethostbyname(externhost, &ahp))) {
+ memcpy(&externip.sin_addr, hp->h_addr, sizeof(externip.sin_addr));
+ } else
+ ast_log(LOG_NOTICE, "Warning: Re-lookup of '%s' failed!\n", externhost);
+ }
memcpy(us, &externip.sin_addr, sizeof(struct in_addr));
ast_inet_ntoa(iabuf, sizeof(iabuf), *(struct in_addr *)&them->s_addr);
ast_log(LOG_DEBUG, "Target address %s is not local, substituting externip\n", iabuf);