aboutsummaryrefslogtreecommitdiffstats
path: root/cdr
diff options
context:
space:
mode:
authormnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-10-09 17:27:48 +0000
committermnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-10-09 17:27:48 +0000
commit5ba22e826e2a9db392e61d1faa0a12df24eee4af (patch)
tree0a3eb9724905b72737bf237689dc1102d6834c99 /cdr
parentcf9d793e2a6645162de29390b8e9be438381d765 (diff)
Merged revisions 223136 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r223136 | mnicholson | 2009-10-09 12:14:38 -0500 (Fri, 09 Oct 2009) | 8 lines 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/branches/1.6.2@223173 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'cdr')
-rw-r--r--cdr/cdr_sqlite3_custom.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/cdr/cdr_sqlite3_custom.c b/cdr/cdr_sqlite3_custom.c
index c2bd8a046..a16648be5 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;
}
@@ -279,7 +279,7 @@ static int unload_module(void)
{
ast_cdr_unregister(name);
- free_config();
+ free_config(0);
return 0;
}
@@ -300,7 +300,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;
}
@@ -316,7 +316,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;
}
}
@@ -324,7 +324,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;
}