diff options
author | Russell Bryant <russell@russellbryant.com> | 2010-09-21 15:45:46 +0000 |
---|---|---|
committer | Russell Bryant <russell@russellbryant.com> | 2010-09-21 15:45:46 +0000 |
commit | 4a356afb7defb1c6e8f1e1f307947785bb759093 (patch) | |
tree | 5bf60365e0c39234fb9820c4095dd1ed8ba4aced /main/dnsmgr.c | |
parent | 9b4cfb0d28156f5aaca019a4d1cd97bcd6cf5820 (diff) |
Merged revisions 287895 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r287895 | russell | 2010-09-21 10:43:33 -0500 (Tue, 21 Sep 2010) | 10 lines
Don't use ast_strdupa() from within the arguments to a function.
(closes issue #17902)
Reported by: afried
Patches:
issue_17902.rev1.txt uploaded by russell (license 2)
Tested by: russell
Review: https://reviewboard.asterisk.org/r/927/
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@287896 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/dnsmgr.c')
-rw-r--r-- | main/dnsmgr.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/main/dnsmgr.c b/main/dnsmgr.c index 7036708c7..7fb5f8803 100644 --- a/main/dnsmgr.c +++ b/main/dnsmgr.c @@ -151,22 +151,26 @@ int ast_dnsmgr_lookup(const char *name, struct ast_sockaddr *result, struct ast_ */ static int dnsmgr_refresh(struct ast_dnsmgr_entry *entry, int verbose) { - struct ast_sockaddr tmp; + struct ast_sockaddr tmp = { .len = 0, }; int changed = 0; ast_mutex_lock(&entry->lock); - if (verbose) - ast_verb(3, "refreshing '%s'\n", entry->name); - memset(&tmp, 0, sizeof(tmp)); + if (verbose) { + ast_verb(3, "refreshing '%s'\n", entry->name); + } if (!ast_get_ip_or_srv(&tmp, entry->name, entry->service)) { - if (!ast_sockaddr_port(&tmp)) + if (!ast_sockaddr_port(&tmp)) { ast_sockaddr_set_port(&tmp, ast_sockaddr_port(entry->result)); + } + if (ast_sockaddr_cmp(&tmp, entry->result)) { + const char *old_addr = ast_strdupa(ast_sockaddr_stringify(entry->result)); + const char *new_addr = ast_strdupa(ast_sockaddr_stringify(&tmp)); + ast_log(LOG_NOTICE, "dnssrv: host '%s' changed from %s to %s\n", - entry->name, ast_strdupa(ast_sockaddr_stringify(entry->result)), - ast_strdupa(ast_sockaddr_stringify(&tmp))); + entry->name, old_addr, new_addr); ast_sockaddr_copy(entry->result, &tmp); changed = entry->changed = 1; @@ -174,6 +178,7 @@ static int dnsmgr_refresh(struct ast_dnsmgr_entry *entry, int verbose) } ast_mutex_unlock(&entry->lock); + return changed; } |