From 95b66cea9ff55524004850d09594ba8bc102fd92 Mon Sep 17 00:00:00 2001 From: Sergey Safarov Date: Fri, 7 Oct 2016 05:38:35 -0400 Subject: [PATCH] FS-9594: Fixed hostname resolving for IPv6 addreses. aa --- src/mod/event_handlers/mod_kazoo/kazoo_utils.c | 13 ++++++------- src/mod/event_handlers/mod_kazoo/mod_kazoo.h | 1 + 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mod/event_handlers/mod_kazoo/kazoo_utils.c b/src/mod/event_handlers/mod_kazoo/kazoo_utils.c index 962e87f6f1..5f6e4bf78c 100644 --- a/src/mod/event_handlers/mod_kazoo/kazoo_utils.c +++ b/src/mod/event_handlers/mod_kazoo/kazoo_utils.c @@ -157,6 +157,8 @@ switch_socket_t *create_socket_with_port(switch_memory_pool_t *pool, switch_port return NULL; } + switch_getnameinfo(&globals.hostname, sa, 0); + // if (globals.nat_map && switch_nat_get_type()) { // switch_nat_add_mapping(port, SWITCH_NAT_TCP, NULL, SWITCH_FALSE); // } @@ -170,7 +172,6 @@ switch_socket_t *create_socket(switch_memory_pool_t *pool) { } switch_status_t create_ei_cnode(const char *ip_addr, const char *name, struct ei_cnode_s *ei_cnode) { - struct hostent *nodehost; char hostname[EI_MAXHOSTNAMELEN + 1] = ""; char nodename[MAXNODELEN + 1]; char cnodename[EI_MAXALIVELEN + 1]; @@ -186,12 +187,10 @@ switch_status_t create_ei_cnode(const char *ip_addr, const char *name, struct ei /* truncate the alivename at the @ */ *atsign = '\0'; } else { - if ((nodehost = gethostbyaddr(ip_addr, sizeof (ip_addr), AF_INET))) { - memcpy(hostname, nodehost->h_name, EI_MAXHOSTNAMELEN); - } - - if (zstr_buf(hostname) || !strncasecmp(globals.ip, "0.0.0.0", 7)) { - gethostname(hostname, EI_MAXHOSTNAMELEN); + if (zstr(globals.hostname) || !strncasecmp(globals.ip, "0.0.0.0", 7) || !strncasecmp(globals.ip, "::", 2)) { + memcpy(hostname, switch_core_get_hostname(), EI_MAXHOSTNAMELEN); + } else { + memcpy(hostname, globals.hostname, EI_MAXHOSTNAMELEN); } snprintf(nodename, MAXNODELEN + 1, "%s@%s", globals.ei_nodename, hostname); diff --git a/src/mod/event_handlers/mod_kazoo/mod_kazoo.h b/src/mod/event_handlers/mod_kazoo/mod_kazoo.h index a1e105ccc9..e2a23134ba 100644 --- a/src/mod/event_handlers/mod_kazoo/mod_kazoo.h +++ b/src/mod/event_handlers/mod_kazoo/mod_kazoo.h @@ -103,6 +103,7 @@ struct globals_s { switch_bool_t ei_shortname; int ei_compat_rel; char *ip; + char *hostname; char *ei_cookie; char *ei_nodename; char *kazoo_var_prefix;