From 91efe36d4e51f4da67a326f3adba621b8c678439 Mon Sep 17 00:00:00 2001 From: Chris Rienzo Date: Mon, 24 Jun 2013 21:55:58 -0400 Subject: [PATCH] mod_rayo: valgrind fixes --- src/mod/event_handlers/mod_rayo/mod_rayo.c | 27 +++++++++++++++---- .../event_handlers/mod_rayo/xmpp_streams.c | 5 +++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/mod/event_handlers/mod_rayo/mod_rayo.c b/src/mod/event_handlers/mod_rayo/mod_rayo.c index 54d15960f4..36200aa2fb 100644 --- a/src/mod/event_handlers/mod_rayo/mod_rayo.c +++ b/src/mod/event_handlers/mod_rayo/mod_rayo.c @@ -3242,6 +3242,7 @@ static void send_console_command(struct rayo_client *client, const char *to, con str = iks_string(iks_stack(iq), iq); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "\nSEND: to %s, %s\n", to, str); rayo_client_command_recv(client, iq); + iks_delete(command); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "bad request xml\n"); } @@ -3639,11 +3640,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_rayo_load) */ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rayo_shutdown) { - if (globals.console) { - RAYO_UNLOCK(globals.console); - RAYO_DESTROY(globals.console); - } - switch_console_del_complete_func("::rayo::list_actors"); switch_console_set_complete("del rayo"); @@ -3655,6 +3651,18 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rayo_shutdown) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Waiting for message threads to stop\n"); stop_deliver_message_threads(); + if (globals.console) { + RAYO_UNLOCK(globals.console); + RAYO_DESTROY(globals.console); + globals.console = NULL; + } + + if (globals.server) { + RAYO_UNLOCK(globals.server); + RAYO_DESTROY(globals.server); + globals.server = NULL; + } + rayo_components_shutdown(); /* cleanup module */ @@ -3662,6 +3670,15 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rayo_shutdown) switch_event_unbind_callback(on_call_end_event); switch_event_unbind_callback(route_mixer_event); + switch_core_hash_destroy(&globals.command_handlers); + switch_core_hash_destroy(&globals.event_handlers); + switch_core_hash_destroy(&globals.clients_roster); + switch_core_hash_destroy(&globals.actors); + switch_core_hash_destroy(&globals.destroy_actors); + switch_core_hash_destroy(&globals.actors_by_id); + switch_core_hash_destroy(&globals.dial_gateways); + switch_core_hash_destroy(&globals.cmd_aliases); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Module shutdown\n"); return SWITCH_STATUS_SUCCESS; diff --git a/src/mod/event_handlers/mod_rayo/xmpp_streams.c b/src/mod/event_handlers/mod_rayo/xmpp_streams.c index a1fa348ec3..3b5547b29b 100644 --- a/src/mod/event_handlers/mod_rayo/xmpp_streams.c +++ b/src/mod/event_handlers/mod_rayo/xmpp_streams.c @@ -1592,7 +1592,7 @@ static void *SWITCH_THREAD_FUNC xmpp_listener_thread(switch_thread_t *thread, vo int allowed = 0; char remote_ip[50] = { 0 }; if (switch_socket_addr_get(&sa, SWITCH_TRUE, socket) == SWITCH_STATUS_SUCCESS && sa) { - switch_get_addr(remote_ip, sizeof(remote_ip), sa); + switch_get_addr(remote_ip, sizeof(remote_ip), sa); allowed = switch_check_network_list_ip(remote_ip, listener->acl); } if (!allowed) { @@ -1779,6 +1779,9 @@ void xmpp_stream_context_destroy(struct xmpp_stream_context *context) context->shutdown = 1; /* wait for threads to finish */ switch_thread_rwlock_wrlock(context->shutdown_rwlock); + switch_core_hash_destroy(&context->routes); + switch_core_hash_destroy(&context->streams); + switch_core_hash_destroy(&context->users); pool = context->pool; switch_core_destroy_memory_pool(&pool); }