mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
pbx_config.c: Fix reloading module if initially declined to load
Added decline if extensions.conf file not available when loading pbx_config, and also made sure everything gets properly unregistered and/or destroyed on unload. Change-Id: Ib00665106043b1be5148ffa7a477396038915854
This commit is contained in:
committed by
Chris Savinovich
parent
ed7cef7d06
commit
cfb854e241
@@ -1625,15 +1625,15 @@ static struct ast_cli_entry cli_dialplan_save =
|
|||||||
*/
|
*/
|
||||||
static int unload_module(void)
|
static int unload_module(void)
|
||||||
{
|
{
|
||||||
if (static_config && !write_protect_config)
|
ast_cli_unregister(&cli_dialplan_save);
|
||||||
ast_cli_unregister(&cli_dialplan_save);
|
ast_free(overrideswitch_config);
|
||||||
if (overrideswitch_config) {
|
overrideswitch_config = NULL;
|
||||||
ast_free(overrideswitch_config);
|
|
||||||
}
|
|
||||||
ast_cli_unregister_multiple(cli_pbx_config, ARRAY_LEN(cli_pbx_config));
|
ast_cli_unregister_multiple(cli_pbx_config, ARRAY_LEN(cli_pbx_config));
|
||||||
ast_manager_unregister(AMI_EXTENSION_ADD);
|
ast_manager_unregister(AMI_EXTENSION_ADD);
|
||||||
ast_manager_unregister(AMI_EXTENSION_REMOVE);
|
ast_manager_unregister(AMI_EXTENSION_REMOVE);
|
||||||
ast_context_destroy(NULL, registrar);
|
ast_context_destroy(NULL, registrar);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2081,10 +2081,17 @@ static int pbx_load_module(void)
|
|||||||
|
|
||||||
ast_mutex_lock(&reload_lock);
|
ast_mutex_lock(&reload_lock);
|
||||||
|
|
||||||
if (!local_table)
|
if (!local_table) {
|
||||||
local_table = ast_hashtab_create(17, ast_hashtab_compare_contexts, ast_hashtab_resize_java, ast_hashtab_newsize_java, ast_hashtab_hash_contexts, 0);
|
local_table = ast_hashtab_create(17, ast_hashtab_compare_contexts, ast_hashtab_resize_java, ast_hashtab_newsize_java, ast_hashtab_hash_contexts, 0);
|
||||||
|
if (!local_table) {
|
||||||
|
ast_mutex_unlock(&reload_lock);
|
||||||
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!pbx_load_config(config)) {
|
if (!pbx_load_config(config)) {
|
||||||
|
ast_hashtab_destroy(local_table, NULL);
|
||||||
|
local_table = NULL;
|
||||||
ast_mutex_unlock(&reload_lock);
|
ast_mutex_unlock(&reload_lock);
|
||||||
return AST_MODULE_LOAD_DECLINE;
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
}
|
}
|
||||||
@@ -2111,6 +2118,11 @@ static int load_module(void)
|
|||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
|
if (pbx_load_module()) {
|
||||||
|
unload_module();
|
||||||
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
|
}
|
||||||
|
|
||||||
if (static_config && !write_protect_config)
|
if (static_config && !write_protect_config)
|
||||||
ast_cli_register(&cli_dialplan_save);
|
ast_cli_register(&cli_dialplan_save);
|
||||||
ast_cli_register_multiple(cli_pbx_config, ARRAY_LEN(cli_pbx_config));
|
ast_cli_register_multiple(cli_pbx_config, ARRAY_LEN(cli_pbx_config));
|
||||||
@@ -2125,9 +2137,6 @@ static int load_module(void)
|
|||||||
return AST_MODULE_LOAD_DECLINE;
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pbx_load_module())
|
|
||||||
return AST_MODULE_LOAD_DECLINE;
|
|
||||||
|
|
||||||
return AST_MODULE_LOAD_SUCCESS;
|
return AST_MODULE_LOAD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user