From 183b51dd5c95910d0fffe4d1d375710c965d72bc Mon Sep 17 00:00:00 2001
From: Luis Azedo <luis@2600hz.com>
Date: Thu, 30 Jul 2015 16:17:09 +0100
Subject: [PATCH] FS-7918 small fixes in mod_kazoo

---
 src/mod/event_handlers/mod_kazoo/kazoo_utils.c | 11 ++++++++---
 src/mod/event_handlers/mod_kazoo/mod_kazoo.c   |  6 +++++-
 src/mod/event_handlers/mod_kazoo/mod_kazoo.h   |  6 ++++--
 3 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/mod/event_handlers/mod_kazoo/kazoo_utils.c b/src/mod/event_handlers/mod_kazoo/kazoo_utils.c
index 83295234ec..f23182ff44 100644
--- a/src/mod/event_handlers/mod_kazoo/kazoo_utils.c
+++ b/src/mod/event_handlers/mod_kazoo/kazoo_utils.c
@@ -139,11 +139,11 @@ void close_socketfd(int *sockfd) {
 	}
 }
 
-switch_socket_t *create_socket(switch_memory_pool_t *pool) {
+switch_socket_t *create_socket_with_port(switch_memory_pool_t *pool, switch_port_t port) {
 	switch_sockaddr_t *sa;
 	switch_socket_t *socket;
 
-	if(switch_sockaddr_info_get(&sa, globals.ip, SWITCH_UNSPEC, 0, 0, pool)) {
+	if(switch_sockaddr_info_get(&sa, globals.ip, SWITCH_UNSPEC, port, 0, pool)) {
 		return NULL;
 	}
 
@@ -170,6 +170,11 @@ switch_socket_t *create_socket(switch_memory_pool_t *pool) {
 	return socket;
 }
 
+switch_socket_t *create_socket(switch_memory_pool_t *pool) {
+	return create_socket_with_port(pool, 0);
+
+}
+
 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] = "";
@@ -503,7 +508,7 @@ switch_hash_t *create_default_filter() {
 	switch_core_hash_insert(filter, "Hangup-Cause", "1");
 	switch_core_hash_insert(filter, "Unique-ID", "1");
 	switch_core_hash_insert(filter, "variable_switch_r_sdp", "1");
-	switch_core_hash_insert(filter, "variable_sip_local_sdp_str", "1");
+	switch_core_hash_insert(filter, "variable_rtp_local_sdp_str", "1");
 	switch_core_hash_insert(filter, "variable_sip_to_uri", "1");
 	switch_core_hash_insert(filter, "variable_sip_from_uri", "1");
 	switch_core_hash_insert(filter, "variable_sip_user_agent", "1");
diff --git a/src/mod/event_handlers/mod_kazoo/mod_kazoo.c b/src/mod/event_handlers/mod_kazoo/mod_kazoo.c
index 1e3403d1a1..ebf3af3f8c 100644
--- a/src/mod/event_handlers/mod_kazoo/mod_kazoo.c
+++ b/src/mod/event_handlers/mod_kazoo/mod_kazoo.c
@@ -347,6 +347,7 @@ static switch_status_t config(void) {
 	globals.event_stream_preallocate = 4000;
 	globals.send_msg_batch = 10;
 	globals.event_stream_framing = 2;
+	globals.port = 0;
 	
 	if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to open configuration file %s\n", cf);
@@ -360,6 +361,9 @@ static switch_status_t config(void) {
 				if (!strcmp(var, "listen-ip")) {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Set bind ip address: %s\n", val);
 					set_pref_ip(val);
+				} else if (!strcmp(var, "listen-port")) {
+					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Set bind port: %s\n", val);
+					globals.port = atoi(val);
 				} else if (!strcmp(var, "cookie")) {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Set cookie: %s\n", val);
 					set_pref_ei_cookie(val);
@@ -515,7 +519,7 @@ static switch_status_t create_acceptor() {
 		ei_set_compat_rel(globals.ei_compat_rel);
 	}
 	
-	if (!(globals.acceptor = create_socket(globals.pool))) {
+	if (!(globals.acceptor = create_socket_with_port(globals.pool, globals.port))) {
 		return SWITCH_STATUS_SOCKERR;
 	}
 	
diff --git a/src/mod/event_handlers/mod_kazoo/mod_kazoo.h b/src/mod/event_handlers/mod_kazoo/mod_kazoo.h
index 855f239c33..da27ed9dc4 100644
--- a/src/mod/event_handlers/mod_kazoo/mod_kazoo.h
+++ b/src/mod/event_handlers/mod_kazoo/mod_kazoo.h
@@ -48,9 +48,9 @@ struct ei_event_stream_s {
 	switch_socket_t *socket;
 	switch_mutex_t *socket_mutex;
 	switch_bool_t connected;
-	char remote_ip[25];
+	char remote_ip[48];
 	uint16_t remote_port;
-	char local_ip[25];
+	char local_ip[48];
 	uint16_t local_port;
 	erlang_pid pid;
 	uint32_t flags;
@@ -111,6 +111,7 @@ struct globals_s {
 	int event_stream_preallocate;
 	int send_msg_batch;
 	short event_stream_framing;
+	switch_port_t port;
 };
 typedef struct globals_s globals_t;
 extern globals_t globals;
@@ -140,6 +141,7 @@ switch_status_t handle_api_command_streams(ei_node_t *ei_node, switch_stream_han
 /* kazoo_utils.c */
 void close_socket(switch_socket_t **sock);
 void close_socketfd(int *sockfd);
+switch_socket_t *create_socket_with_port(switch_memory_pool_t *pool, switch_port_t port);
 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 ei_compare_pids(const erlang_pid *pid1, const erlang_pid *pid2);