diff options
Diffstat (limited to 'cdr')
-rw-r--r-- | cdr/cdr_adaptive_odbc.c | 5 | ||||
-rw-r--r-- | cdr/cdr_csv.c | 5 | ||||
-rw-r--r-- | cdr/cdr_custom.c | 4 | ||||
-rw-r--r-- | cdr/cdr_manager.c | 24 | ||||
-rw-r--r-- | cdr/cdr_odbc.c | 8 | ||||
-rw-r--r-- | cdr/cdr_pgsql.c | 5 | ||||
-rw-r--r-- | cdr/cdr_radius.c | 5 | ||||
-rw-r--r-- | cdr/cdr_sqlite.c | 5 | ||||
-rw-r--r-- | cdr/cdr_sqlite3_custom.c | 4 | ||||
-rw-r--r-- | cdr/cdr_syslog.c | 4 | ||||
-rw-r--r-- | cdr/cdr_tds.c | 6 |
11 files changed, 56 insertions, 19 deletions
diff --git a/cdr/cdr_adaptive_odbc.c b/cdr/cdr_adaptive_odbc.c index 0a9cfdbdd..4078b79ba 100644 --- a/cdr/cdr_adaptive_odbc.c +++ b/cdr/cdr_adaptive_odbc.c @@ -767,7 +767,10 @@ early_release: static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } + if (AST_RWLIST_WRLOCK(&odbc_tables)) { ast_cdr_register(name, ast_module_info->description, odbc_log); ast_log(LOG_ERROR, "Unable to lock column list. Unload failed.\n"); diff --git a/cdr/cdr_csv.c b/cdr/cdr_csv.c index a6f8a4dc0..1cc1747c6 100644 --- a/cdr/cdr_csv.c +++ b/cdr/cdr_csv.c @@ -315,7 +315,10 @@ static int csv_log(struct ast_cdr *cdr) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } + loaded = 0; return 0; } diff --git a/cdr/cdr_custom.c b/cdr/cdr_custom.c index 2a3b1a1dd..51235db7f 100644 --- a/cdr/cdr_custom.c +++ b/cdr/cdr_custom.c @@ -184,7 +184,9 @@ static int custom_log(struct ast_cdr *cdr) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } if (AST_RWLIST_WRLOCK(&sinks)) { ast_cdr_register(name, ast_module_info->description, custom_log); diff --git a/cdr/cdr_manager.c b/cdr/cdr_manager.c index e3ae7a57d..90c5dbd23 100644 --- a/cdr/cdr_manager.c +++ b/cdr/cdr_manager.c @@ -86,8 +86,9 @@ static int load_config(int reload) if (!cfg) { /* Standard configuration */ ast_log(LOG_WARNING, "Failed to load configuration file. Module not activated.\n"); - if (enablecdr) - ast_cdr_unregister(name); + if (enablecdr) { + ast_cdr_backend_suspend(name); + } enablecdr = 0; return -1; } @@ -135,10 +136,11 @@ static int load_config(int reload) ast_config_destroy(cfg); - if (enablecdr && !newenablecdr) - ast_cdr_unregister(name); - else if (!enablecdr && newenablecdr) - ast_cdr_register(name, "Asterisk Manager Interface CDR Backend", manager_log); + if (!newenablecdr) { + ast_cdr_backend_suspend(name); + } else if (newenablecdr) { + ast_cdr_backend_unsuspend(name); + } enablecdr = newenablecdr; return 0; @@ -210,7 +212,10 @@ static int manager_log(struct ast_cdr *cdr) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } + if (customfields) ast_free(customfields); @@ -219,7 +224,12 @@ static int unload_module(void) static int load_module(void) { + if (ast_cdr_register(name, "Asterisk Manager Interface CDR Backend", manager_log)) { + return AST_MODULE_LOAD_DECLINE; + } + if (load_config(0)) { + ast_cdr_unregister(name); return AST_MODULE_LOAD_DECLINE; } diff --git a/cdr/cdr_odbc.c b/cdr/cdr_odbc.c index 022d75210..be07a8a56 100644 --- a/cdr/cdr_odbc.c +++ b/cdr/cdr_odbc.c @@ -266,8 +266,10 @@ static int odbc_load_module(int reload) } while (0); if (ast_test_flag(&config, CONFIG_REGISTERED) && (!cfg || dsn == NULL || table == NULL)) { - ast_cdr_unregister(name); + ast_cdr_backend_suspend(name); ast_clear_flag(&config, CONFIG_REGISTERED); + } else { + ast_cdr_backend_unsuspend(name); } if (cfg && cfg != CONFIG_STATUS_FILEUNCHANGED && cfg != CONFIG_STATUS_FILEINVALID) { @@ -283,7 +285,9 @@ static int load_module(void) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } if (dsn) { ast_verb(11, "cdr_odbc: free dsn\n"); diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c index dc73de477..6ac389788 100644 --- a/cdr/cdr_pgsql.c +++ b/cdr/cdr_pgsql.c @@ -436,7 +436,10 @@ static void empty_columns(void) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } + ast_cli_unregister_multiple(cdr_pgsql_status_cli, ARRAY_LEN(cdr_pgsql_status_cli)); PQfinish(conn); diff --git a/cdr/cdr_radius.c b/cdr/cdr_radius.c index 2bf2002fe..1466808d5 100644 --- a/cdr/cdr_radius.c +++ b/cdr/cdr_radius.c @@ -230,7 +230,10 @@ return_cleanup: static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } + if (rh) { rc_destroy(rh); rh = NULL; diff --git a/cdr/cdr_sqlite.c b/cdr/cdr_sqlite.c index 46aa42bb1..884837c16 100644 --- a/cdr/cdr_sqlite.c +++ b/cdr/cdr_sqlite.c @@ -191,7 +191,10 @@ static int sqlite_log(struct ast_cdr *cdr) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } + if (db) { sqlite_close(db); } diff --git a/cdr/cdr_sqlite3_custom.c b/cdr/cdr_sqlite3_custom.c index 601234604..83dac6a5d 100644 --- a/cdr/cdr_sqlite3_custom.c +++ b/cdr/cdr_sqlite3_custom.c @@ -289,7 +289,9 @@ static int write_cdr(struct ast_cdr *cdr) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } free_config(0); diff --git a/cdr/cdr_syslog.c b/cdr/cdr_syslog.c index dec4d65e9..de8cae4ec 100644 --- a/cdr/cdr_syslog.c +++ b/cdr/cdr_syslog.c @@ -235,7 +235,9 @@ static int load_config(int reload) static int unload_module(void) { - ast_cdr_unregister(name); + if (ast_cdr_unregister(name)) { + return -1; + } if (AST_RWLIST_WRLOCK(&sinks)) { ast_cdr_register(name, ast_module_info->description, syslog_log); diff --git a/cdr/cdr_tds.c b/cdr/cdr_tds.c index aef57b55d..5a1312ecc 100644 --- a/cdr/cdr_tds.c +++ b/cdr/cdr_tds.c @@ -443,6 +443,10 @@ failed: static int tds_unload_module(void) { + if (ast_cdr_unregister(name)) { + return -1; + } + if (settings) { ast_mutex_lock(&tds_lock); mssql_disconnect(); @@ -452,8 +456,6 @@ static int tds_unload_module(void) ast_free(settings); } - ast_cdr_unregister(name); - dbexit(); return 0; |