mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-08 21:31:51 +00:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user