diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-06-08 00:03:49 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-06-08 00:03:49 +0000 |
commit | 644b6be8afe1d109b17be0c76e94173d5b36a0bf (patch) | |
tree | 09df9ff46095690740c78a6543bb58aac3b41f33 /main/dnsmgr.c | |
parent | a3bc1e509004d6bea0ad402495beedf678e82e8d (diff) |
Merged revisions 68370 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
................
r68370 | file | 2007-06-07 20:02:34 -0400 (Thu, 07 Jun 2007) | 10 lines
Merged revisions 68368 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r68368 | file | 2007-06-07 19:59:04 -0400 (Thu, 07 Jun 2007) | 2 lines
Do a DNS lookup immediately upon calling the dnsmgr function, don't wait until a refresh happens. (issue #9097 reported by plack)
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@68374 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/dnsmgr.c')
-rw-r--r-- | main/dnsmgr.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/main/dnsmgr.c b/main/dnsmgr.c index 1c5eb050b..803151add 100644 --- a/main/dnsmgr.c +++ b/main/dnsmgr.c @@ -121,6 +121,9 @@ void ast_dnsmgr_release(struct ast_dnsmgr_entry *entry) int ast_dnsmgr_lookup(const char *name, struct in_addr *result, struct ast_dnsmgr_entry **dnsmgr) { + struct ast_hostent ahp; + struct hostent *hp; + if (ast_strlen_zero(name) || !result || !dnsmgr) return -1; @@ -135,21 +138,18 @@ int ast_dnsmgr_lookup(const char *name, struct in_addr *result, struct ast_dnsmg if (inet_aton(name, result)) return 0; - /* if the manager is disabled, do a direct lookup and return the result, - otherwise register a managed lookup for the name */ - if (!enabled) { - struct ast_hostent ahp; - struct hostent *hp; - - if ((hp = ast_gethostbyname(name, &ahp))) - memcpy(result, hp->h_addr, sizeof(result)); + /* do a lookup now but add a manager so it will automagically get updated in the background */ + if ((hp = ast_gethostbyname(name, &ahp))) + memcpy(result, hp->h_addr, sizeof(result)); + + /* if dnsmgr is not enable don't bother adding an entry */ + if (!enabled) return 0; - } else { - if (option_verbose > 2) - ast_verbose(VERBOSE_PREFIX_2 "adding dns manager for '%s'\n", name); - *dnsmgr = ast_dnsmgr_get(name, result); - return !*dnsmgr; - } + + if (option_verbose > 2) + ast_verbose(VERBOSE_PREFIX_2 "adding dns manager for '%s'\n", name); + *dnsmgr = ast_dnsmgr_get(name, result); + return !*dnsmgr; } /* |