mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 03:02:04 +00:00
cdr_pgsql: Fix crash when the module fails to load multiple times.
Missing or corrupt cdr_pgsql.conf configuration file can cause the
second attempt to load the PostgreSQL CDR module to crash Asterisk via
the Command Line Interface because a null CLI command is registered on
the first failed attempt to load the module.
Resolves: #736
(cherry picked from commit 735330bbd1
)
This commit is contained in:
committed by
Asterisk Development Team
parent
791363d2e6
commit
dd5ced4102
@@ -783,12 +783,23 @@ static int config_module(int reload)
|
||||
|
||||
static int load_module(void)
|
||||
{
|
||||
ast_cli_register_multiple(cdr_pgsql_status_cli, sizeof(cdr_pgsql_status_cli) / sizeof(struct ast_cli_entry));
|
||||
int res;
|
||||
|
||||
if (config_module(0)) {
|
||||
return AST_MODULE_LOAD_DECLINE;
|
||||
res = AST_MODULE_LOAD_DECLINE;
|
||||
} else if (ast_cdr_register(name, ast_module_info->description, pgsql_log)) {
|
||||
res = AST_MODULE_LOAD_DECLINE;
|
||||
} else if (ast_cli_register_multiple(cdr_pgsql_status_cli, ARRAY_LEN(cdr_pgsql_status_cli))) {
|
||||
res = AST_MODULE_LOAD_DECLINE;
|
||||
} else {
|
||||
res = AST_MODULE_LOAD_SUCCESS;
|
||||
}
|
||||
return ast_cdr_register(name, ast_module_info->description, pgsql_log)
|
||||
? AST_MODULE_LOAD_DECLINE : 0;
|
||||
|
||||
if (res != AST_MODULE_LOAD_SUCCESS) {
|
||||
unload_module();
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int reload(void)
|
||||
|
Reference in New Issue
Block a user