mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
Fix various memory leaks
main/config.c - cleanup cache fie includes res/res_security_log.c - unregister logger level channesl/chan_sip.c - cleanup io context and notify_types main/translator.c - cleanup at shutdown main/named_acl.c - cleanup cli commands main/indications.c - ast_get_indication_tone() unref default_tone_zone if used (closes issues ASTERISK-22378) Reported by: Corey Farrell Patches: config_shutdown.patch uploaded by coreyfarrell (license 5909) res_security_log.patch uploaded by coreyfarrell (license 5909) chan_sip-11.patch uploaded by coreyfarrell (license 5909) indications_refleak.patch uploaded by coreyfarrell (license 5909) named_acl-cli_unreg-trunk.patch uploaded by coreyfarrell (license 5909) translate_shutdown.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 398102 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398103 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398116 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@398124 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -34662,7 +34662,12 @@ static int unload_module(void)
|
||||
|
||||
clear_sip_domains();
|
||||
sip_cfg.contact_acl = ast_free_acl_list(sip_cfg.contact_acl);
|
||||
if (sipsock_read_id) {
|
||||
ast_io_remove(io, sipsock_read_id);
|
||||
sipsock_read_id = NULL;
|
||||
}
|
||||
close(sipsock);
|
||||
io_context_destroy(io);
|
||||
ast_sched_context_destroy(sched);
|
||||
con = ast_context_find(used_context);
|
||||
if (con) {
|
||||
@@ -34676,6 +34681,11 @@ static int unload_module(void)
|
||||
sip_reqresp_parser_exit();
|
||||
sip_unregister_tests();
|
||||
|
||||
if (notify_types) {
|
||||
ast_config_destroy(notify_types);
|
||||
notify_types = NULL;
|
||||
}
|
||||
|
||||
ast_format_cap_destroy(sip_tech.capabilities);
|
||||
sip_cfg.caps = ast_format_cap_destroy(sip_cfg.caps);
|
||||
|
||||
|
@@ -3248,6 +3248,10 @@ static void config_shutdown(void)
|
||||
|
||||
AST_LIST_LOCK(&cfmtime_head);
|
||||
while ((cfmtime = AST_LIST_REMOVE_HEAD(&cfmtime_head, list))) {
|
||||
struct cache_file_include *cfinclude;
|
||||
while ((cfinclude = AST_LIST_REMOVE_HEAD(&cfmtime->includes, list))) {
|
||||
ast_free(cfinclude);
|
||||
}
|
||||
ast_free(cfmtime);
|
||||
}
|
||||
AST_LIST_UNLOCK(&cfmtime_head);
|
||||
|
@@ -499,6 +499,9 @@ struct ast_tone_zone_sound *ast_get_indication_tone(const struct ast_tone_zone *
|
||||
|
||||
ast_tone_zone_unlock(zone);
|
||||
|
||||
if (!_zone)
|
||||
zone = ast_tone_zone_unref(zone);
|
||||
|
||||
return ts;
|
||||
}
|
||||
|
||||
|
@@ -567,6 +567,8 @@ static struct ast_cli_entry cli_named_acl[] = {
|
||||
|
||||
static void named_acl_cleanup(void)
|
||||
{
|
||||
ast_cli_unregister_multiple(cli_named_acl, ARRAY_LEN(cli_named_acl));
|
||||
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_named_acl_change_type);
|
||||
aco_info_destroy(&cfg_info);
|
||||
ao2_global_obj_release(globals);
|
||||
|
@@ -1396,11 +1396,27 @@ void ast_translate_available_formats(struct ast_format_cap *dest, struct ast_for
|
||||
ast_format_cap_iter_end(src);
|
||||
}
|
||||
|
||||
static void translate_shutdown(void)
|
||||
{
|
||||
int x;
|
||||
ast_cli_unregister_multiple(cli_translate, ARRAY_LEN(cli_translate));
|
||||
|
||||
ast_rwlock_wrlock(&tablelock);
|
||||
for (x = 0; x < index_size; x++) {
|
||||
ast_free(__matrix[x]);
|
||||
}
|
||||
ast_free(__matrix);
|
||||
ast_free(__indextable);
|
||||
ast_rwlock_unlock(&tablelock);
|
||||
ast_rwlock_destroy(&tablelock);
|
||||
}
|
||||
|
||||
int ast_translate_init(void)
|
||||
{
|
||||
int res = 0;
|
||||
ast_rwlock_init(&tablelock);
|
||||
res = matrix_resize(1);
|
||||
res |= ast_cli_register_multiple(cli_translate, ARRAY_LEN(cli_translate));
|
||||
ast_register_atexit(translate_shutdown);
|
||||
return res;
|
||||
}
|
||||
|
@@ -155,6 +155,8 @@ static int unload_module(void)
|
||||
security_stasis_sub = stasis_unsubscribe(security_stasis_sub);
|
||||
}
|
||||
|
||||
ast_logger_unregister_level(LOG_SECURITY_NAME);
|
||||
|
||||
ast_verb(3, "Security Logging Disabled\n");
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user