forked from Mirrors/freeswitch
FS-10805: Memory Leak fix in mod_amqp
Memory allocated to hash iterators and hash tables isn't released during module shutdown. With these changes, memory allocated to hash iterators and hash tables will be freed properly.
This commit is contained in:
parent
f7e2505fc7
commit
97d6bee3fc
@ -86,7 +86,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_amqp_load)
|
||||
*/
|
||||
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_amqp_shutdown)
|
||||
{
|
||||
switch_hash_index_t *hi;
|
||||
switch_hash_index_t *hi = NULL;
|
||||
mod_amqp_producer_profile_t *producer;
|
||||
mod_amqp_command_profile_t *command;
|
||||
mod_amqp_logging_profile_t *logging;
|
||||
@ -94,22 +94,26 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_amqp_shutdown)
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Mod starting shutting down\n");
|
||||
switch_event_unbind_callback(mod_amqp_producer_event_handler);
|
||||
|
||||
while ((hi = switch_core_hash_first(mod_amqp_globals.producer_hash))) {
|
||||
while ((hi = switch_core_hash_first_iter(mod_amqp_globals.producer_hash, hi))) {
|
||||
switch_core_hash_this(hi, NULL, NULL, (void **)&producer);
|
||||
mod_amqp_producer_destroy(&producer);
|
||||
}
|
||||
|
||||
while ((hi = switch_core_hash_first(mod_amqp_globals.command_hash))) {
|
||||
while ((hi = switch_core_hash_first_iter(mod_amqp_globals.command_hash, hi))) {
|
||||
switch_core_hash_this(hi, NULL, NULL, (void **)&command);
|
||||
mod_amqp_command_destroy(&command);
|
||||
}
|
||||
|
||||
switch_log_unbind_logger(mod_amqp_logging_recv);
|
||||
while ((hi = switch_core_hash_first(mod_amqp_globals.logging_hash))) {
|
||||
while ((hi = switch_core_hash_first_iter(mod_amqp_globals.logging_hash, hi))) {
|
||||
switch_core_hash_this(hi, NULL, NULL, (void **)&logging);
|
||||
mod_amqp_logging_destroy(&logging);
|
||||
}
|
||||
|
||||
switch_core_hash_destroy(&(mod_amqp_globals.producer_hash));
|
||||
switch_core_hash_destroy(&(mod_amqp_globals.command_hash));
|
||||
switch_core_hash_destroy(&(mod_amqp_globals.logging_hash));
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Mod finished shutting down\n");
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user