Merge pull request #1001 in FS/freeswitch from ~SAFAROV/freeswitch2:FS-9594 to master

* commit 'adb8c8000f616b3b16d83e71c224be022a6defc3':
  FS-9594: Fixed hostname resolving for IPv6 addreses.
  FS-9594: Has been adjusted string vars size to fit IPv6 address
This commit is contained in:
Mike Jerris 2016-10-12 11:05:05 -05:00
commit 03845186de
4 changed files with 13 additions and 13 deletions

View File

@ -154,7 +154,7 @@ static void *SWITCH_THREAD_FUNC event_stream_loop(switch_thread_t *thread, void
ei_event_binding_t *event_binding; ei_event_binding_t *event_binding;
switch_sockaddr_t *sa; switch_sockaddr_t *sa;
uint16_t port; uint16_t port;
char ipbuf[25]; char ipbuf[48];
const char *ip_addr; const char *ip_addr;
void *pop; void *pop;
short event_stream_framing = globals.event_stream_framing; short event_stream_framing = globals.event_stream_framing;

View File

@ -157,6 +157,8 @@ switch_socket_t *create_socket_with_port(switch_memory_pool_t *pool, switch_port
return NULL; return NULL;
} }
switch_getnameinfo(&globals.hostname, sa, 0);
// if (globals.nat_map && switch_nat_get_type()) { // if (globals.nat_map && switch_nat_get_type()) {
// switch_nat_add_mapping(port, SWITCH_NAT_TCP, NULL, SWITCH_FALSE); // 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) { 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 hostname[EI_MAXHOSTNAMELEN + 1] = "";
char nodename[MAXNODELEN + 1]; char nodename[MAXNODELEN + 1];
char cnodename[EI_MAXALIVELEN + 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 @ */ /* truncate the alivename at the @ */
*atsign = '\0'; *atsign = '\0';
} else { } else {
if ((nodehost = gethostbyaddr(ip_addr, sizeof (ip_addr), AF_INET))) { if (zstr(globals.hostname) || !strncasecmp(globals.ip, "0.0.0.0", 7) || !strncasecmp(globals.ip, "::", 2)) {
memcpy(hostname, nodehost->h_name, EI_MAXHOSTNAMELEN); memcpy(hostname, switch_core_get_hostname(), EI_MAXHOSTNAMELEN);
} } else {
memcpy(hostname, globals.hostname, EI_MAXHOSTNAMELEN);
if (zstr_buf(hostname) || !strncasecmp(globals.ip, "0.0.0.0", 7)) {
gethostname(hostname, EI_MAXHOSTNAMELEN);
} }
snprintf(nodename, MAXNODELEN + 1, "%s@%s", globals.ei_nodename, hostname); snprintf(nodename, MAXNODELEN + 1, "%s@%s", globals.ei_nodename, hostname);

View File

@ -50,7 +50,7 @@ SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_pref_kazoo_var_prefix, globals.kazoo_var_p
static switch_status_t api_erlang_status(switch_stream_handle_t *stream) { static switch_status_t api_erlang_status(switch_stream_handle_t *stream) {
switch_sockaddr_t *sa; switch_sockaddr_t *sa;
uint16_t port; uint16_t port;
char ipbuf[25]; char ipbuf[48];
const char *ip_addr; const char *ip_addr;
ei_node_t *ei_node; ei_node_t *ei_node;
@ -177,7 +177,7 @@ static switch_status_t handle_node_api_event_stream(ei_event_stream_t *event_str
if (event_stream->connected == SWITCH_FALSE) { if (event_stream->connected == SWITCH_FALSE) {
switch_sockaddr_t *sa; switch_sockaddr_t *sa;
uint16_t port; uint16_t port;
char ipbuf[25] = {0}; char ipbuf[48] = {0};
const char *ip_addr; const char *ip_addr;
switch_socket_addr_get(&sa, SWITCH_TRUE, event_stream->acceptor); switch_socket_addr_get(&sa, SWITCH_TRUE, event_stream->acceptor);
@ -511,7 +511,7 @@ static switch_status_t config(void) {
static switch_status_t create_acceptor() { static switch_status_t create_acceptor() {
switch_sockaddr_t *sa; switch_sockaddr_t *sa;
uint16_t port; uint16_t port;
char ipbuf[25]; char ipbuf[48];
const char *ip_addr; const char *ip_addr;
/* if the config has specified an erlang release compatibility then pass that along to the erlang interface */ /* if the config has specified an erlang release compatibility then pass that along to the erlang interface */

View File

@ -75,9 +75,9 @@ struct ei_node_s {
char *peer_nodename; char *peer_nodename;
switch_time_t created_time; switch_time_t created_time;
switch_socket_t *socket; switch_socket_t *socket;
char remote_ip[25]; char remote_ip[48];
uint16_t remote_port; uint16_t remote_port;
char local_ip[25]; char local_ip[48];
uint16_t local_port; uint16_t local_port;
uint32_t flags; uint32_t flags;
struct ei_node_s *next; struct ei_node_s *next;
@ -103,6 +103,7 @@ struct globals_s {
switch_bool_t ei_shortname; switch_bool_t ei_shortname;
int ei_compat_rel; int ei_compat_rel;
char *ip; char *ip;
char *hostname;
char *ei_cookie; char *ei_cookie;
char *ei_nodename; char *ei_nodename;
char *kazoo_var_prefix; char *kazoo_var_prefix;