diff options
author | mnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-10-09 17:14:38 +0000 |
---|---|---|
committer | mnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-10-09 17:14:38 +0000 |
commit | e93cb42d79d6ef42333f09b012b10917bf92b655 (patch) | |
tree | b5a30d64485a7890c941d1ec3b4441dd8eedfc22 /cdr | |
parent | 02f5821a59556e5c67ab9f6efdff606415b923a5 (diff) |
Don't close the sqlite database when reloading. Only close the database when unloading.
(closes issue #15953)
Reported by: frawd
Patches:
sqlite3_rev220097.diff uploaded by frawd (license 610)
Tested by: frawd
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@223136 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'cdr')
-rw-r--r-- | cdr/cdr_sqlite3_custom.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/cdr/cdr_sqlite3_custom.c b/cdr/cdr_sqlite3_custom.c index 6f1961c51..215e98776 100644 --- a/cdr/cdr_sqlite3_custom.c +++ b/cdr/cdr_sqlite3_custom.c @@ -70,7 +70,7 @@ struct values { static AST_LIST_HEAD_STATIC(sql_values, values); -static void free_config(void); +static void free_config(int reload); static int load_column_config(const char *tmp) { @@ -163,7 +163,7 @@ static int load_config(int reload) } if (reload) { - free_config(); + free_config(1); } if (!(mappingvar = ast_variable_browse(cfg, "master"))) { @@ -183,14 +183,14 @@ static int load_config(int reload) /* Columns */ if (load_column_config(ast_variable_retrieve(cfg, "master", "columns"))) { ast_config_destroy(cfg); - free_config(); + free_config(0); return -1; } /* Values */ if (load_values_config(ast_variable_retrieve(cfg, "master", "values"))) { ast_config_destroy(cfg); - free_config(); + free_config(0); return -1; } @@ -201,11 +201,11 @@ static int load_config(int reload) return 0; } -static void free_config(void) +static void free_config(int reload) { struct values *value; - if (db) { + if (!reload && db) { sqlite3_close(db); db = NULL; } @@ -288,7 +288,7 @@ static int unload_module(void) { ast_cdr_unregister(name); - free_config(); + free_config(0); return 0; } @@ -309,7 +309,7 @@ static int load_module(void) res = sqlite3_open(filename, &db); if (res != SQLITE_OK) { ast_log(LOG_ERROR, "Could not open database %s.\n", filename); - free_config(); + free_config(0); return AST_MODULE_LOAD_DECLINE; } @@ -325,7 +325,7 @@ static int load_module(void) if (res != SQLITE_OK) { ast_log(LOG_WARNING, "Unable to create table '%s': %s.\n", table, error); sqlite3_free(error); - free_config(); + free_config(0); return AST_MODULE_LOAD_DECLINE; } } @@ -333,7 +333,7 @@ static int load_module(void) res = ast_cdr_register(name, desc, sqlite3_log); if (res) { ast_log(LOG_ERROR, "Unable to register custom SQLite3 CDR handling\n"); - free_config(); + free_config(0); return AST_MODULE_LOAD_DECLINE; } |