]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11952: [Core] Fix memory leaks.
authorAndrey Volk <andywolk@gmail.com>
Wed, 24 Jul 2019 16:26:32 +0000 (20:26 +0400)
committerAndrey Volk <andywolk@gmail.com>
Wed, 24 Jul 2019 16:26:32 +0000 (20:26 +0400)
src/mod/applications/mod_callcenter/mod_callcenter.c
src/mod/applications/mod_hash/mod_hash.c
src/mod/applications/mod_httapi/mod_httapi.c
src/mod/applications/mod_valet_parking/mod_valet_parking.c
src/mod/event_handlers/mod_cdr_pg_csv/mod_cdr_pg_csv.c
src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c
src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
src/mod/event_handlers/mod_rayo/srgs.c
src/switch_core.c
src/switch_msrp.c
src/switch_xml.c

index b3f5ca6fee90dabdf4956ded764071c9607a2a0a..81fd68cf72b2e866fabf96b7822a91c6c3019a04 100644 (file)
@@ -4274,6 +4274,8 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_callcenter_shutdown)
                queue = NULL;
        }
 
+       switch_core_hash_destroy(&globals.queue_hash);
+
        switch_safe_free(globals.odbc_dsn);
        switch_safe_free(globals.dbname);
        switch_safe_free(globals.cc_instance_id);
index ed86ab34fbfec938d4d411ef4813565e55887b08..1e8ebc56f5639ad2e2063abff9536cb8e7d1dbac 100644 (file)
@@ -788,6 +788,7 @@ void limit_remote_destroy(limit_remote_t **r)
                switch_thread_rwlock_destroy((*r)->rwlock);
 
                switch_core_destroy_memory_pool(&((*r)->pool));
+               switch_core_hash_destroy(&(*r)->index);
                *r = NULL;
        }
 }
index 3e28bd16ef4099f536c22322e245a5af65378a55..fed78535e2285f47b92c32f5ecf8736b8804bb1e 100644 (file)
@@ -3242,6 +3242,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_httapi_shutdown)
 
        switch_core_hash_destroy(&globals.profile_hash);
        switch_core_hash_destroy(&globals.parse_hash);
+       switch_core_hash_destroy(&globals.request_hash);
 
        while (globals.hash_root) {
                ptr = globals.hash_root;
index 4bd9ac6e3d3ead2e66b574724dc662a34f6a201d..b938a2953dd5daf17fc22f847d6768efa4a44408 100644 (file)
 
 /* Prototypes */
 SWITCH_MODULE_LOAD_FUNCTION(mod_valet_parking_load);
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_valet_parking_shutdown);
 
 /* SWITCH_MODULE_DEFINITION(name, load, shutdown, runtime)
  * Defines a switch_loadable_module_function_table_t and a static const char[] modname
  */
-SWITCH_MODULE_DEFINITION(mod_valet_parking, mod_valet_parking_load, NULL, NULL);
+SWITCH_MODULE_DEFINITION(mod_valet_parking, mod_valet_parking_load, mod_valet_parking_shutdown, NULL);
 
 typedef struct {
        char ext[256];
@@ -930,6 +931,12 @@ static void pres_event_handler(switch_event_t *event)
        switch_safe_free(dup_lot_name);
 }
 
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_valet_parking_shutdown)
+{
+       switch_core_hash_destroy(&globals.hash);
+       return SWITCH_STATUS_SUCCESS;
+}
+
 /* Macro expands to: switch_status_t mod_valet_parking_load(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) */
 SWITCH_MODULE_LOAD_FUNCTION(mod_valet_parking_load)
 {
index 885c35c64c03c7d5fb6f865a4e62480e91cc81cc..402a20224d1478bd4e8df5da3368180d55633156 100644 (file)
@@ -555,6 +555,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_cdr_pg_csv_shutdown)
        switch_event_unbind_callback(event_handler);
        switch_core_remove_state_handler(&state_handlers);
 
+       switch_core_hash_destroy(&globals.fd_hash);
 
        return SWITCH_STATUS_SUCCESS;
 }
index 51839141e91c220f7a5b156385171df439a394b0..ee10130a0cc537d04a7ee6b9202a4a296db7adc4 100644 (file)
@@ -1399,6 +1399,7 @@ void destroy_listener(listener_t * listener)
        switch_mutex_unlock(listener->sock_mutex);
 
        switch_core_hash_destroy(&listener->event_hash);
+       switch_core_hash_destroy(&listener->sessions);
 
        /* remove any bindings for this connection */
        remove_binding(listener, NULL);
index f591855a3e3029315fe373daa2af2ca0023b6bb9..3a5c011996666078fd9c0bd06dab1673db34a724 100644 (file)
@@ -502,6 +502,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_event_multicast_shutdown)
        switch_event_free_subclass(MULTICAST_PEERDOWN);
 
        switch_core_hash_destroy(&globals.event_hash);
+       switch_core_hash_destroy(&globals.peer_hash);
 
        switch_safe_free(globals.address);
        switch_safe_free(globals.bindings);
index 5da3bce6932fb10c86bd70e6b1a43f2ff6bab46b..6a3111704fbb4d2c422aa10e2626d2f8aa479fe7 100644 (file)
@@ -852,6 +852,7 @@ static void srgs_grammar_destroy(struct srgs_grammar *grammar)
                switch_file_remove(grammar->jsgf_file_name, pool);
        }
        switch_core_destroy_memory_pool(&pool);
+       switch_core_hash_destroy(&grammar->rules);
 }
 
 /**
index da172189745802671de015282e228314cbee10e1..56ca7e81c7ea3ce7583f256d56fbdb7ec6e13669 100644 (file)
@@ -2985,6 +2985,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_destroy(void)
 
        switch_loadable_module_shutdown();
 
+       switch_curl_destroy();
+
        switch_ssl_destroy_ssl_locks();
 
        switch_scheduler_task_thread_stop();
@@ -3032,6 +3034,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_destroy(void)
        switch_safe_free(SWITCH_GLOBAL_dirs.temp_dir);
        switch_safe_free(SWITCH_GLOBAL_dirs.data_dir);
        switch_safe_free(SWITCH_GLOBAL_dirs.localstate_dir);
+       switch_safe_free(SWITCH_GLOBAL_dirs.certs_dir);
+       switch_safe_free(SWITCH_GLOBAL_dirs.lib_dir);
+
+       switch_safe_free(SWITCH_GLOBAL_filenames.conf_name);
 
        switch_event_destroy(&runtime.global_vars);
        switch_core_hash_destroy(&runtime.ptimes);
index e787509ba615b276ee6c8eab3ac8d46a52b7b001..6cf2974d3ef903b9fab67f27a34e79a83e54944d 100644 (file)
@@ -351,6 +351,8 @@ SWITCH_DECLARE(switch_status_t) switch_msrp_destroy()
 
        msrp_deinit_ssl();
 
+       switch_safe_free(globals.ip);
+
        return st;
 }
 
index 60004f29d616bf2f13682f35c061b3181216637c..f2e43f63189e647efe6de46bfdcd7102cdf51597 100644 (file)
@@ -2451,6 +2451,7 @@ SWITCH_DECLARE(switch_status_t) switch_xml_destroy(void)
        switch_xml_clear_user_cache(NULL, NULL, NULL);
 
        switch_core_hash_destroy(&CACHE_HASH);
+       switch_core_hash_destroy(&CACHE_EXPIRES_HASH);
 
        return status;
 }