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);
switch_thread_rwlock_destroy((*r)->rwlock);
switch_core_destroy_memory_pool(&((*r)->pool));
+ switch_core_hash_destroy(&(*r)->index);
*r = NULL;
}
}
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;
/* 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];
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)
{
switch_event_unbind_callback(event_handler);
switch_core_remove_state_handler(&state_handlers);
+ switch_core_hash_destroy(&globals.fd_hash);
return SWITCH_STATUS_SUCCESS;
}
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);
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);
switch_file_remove(grammar->jsgf_file_name, pool);
}
switch_core_destroy_memory_pool(&pool);
+ switch_core_hash_destroy(&grammar->rules);
}
/**
switch_loadable_module_shutdown();
+ switch_curl_destroy();
+
switch_ssl_destroy_ssl_locks();
switch_scheduler_task_thread_stop();
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);
msrp_deinit_ssl();
+ switch_safe_free(globals.ip);
+
return st;
}
switch_xml_clear_user_cache(NULL, NULL, NULL);
switch_core_hash_destroy(&CACHE_HASH);
+ switch_core_hash_destroy(&CACHE_EXPIRES_HASH);
return status;
}