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: https://origsvn.digium.com/svn/asterisk/trunk@223136 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matthew Nicholson
2009-10-09 17:14:38 +00:00
parent 0a50c512da
commit c7358b39b7

View File

@@ -70,7 +70,7 @@ struct values {
static AST_LIST_HEAD_STATIC(sql_values, 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) static int load_column_config(const char *tmp)
{ {
@@ -163,7 +163,7 @@ static int load_config(int reload)
} }
if (reload) { if (reload) {
free_config(); free_config(1);
} }
if (!(mappingvar = ast_variable_browse(cfg, "master"))) { if (!(mappingvar = ast_variable_browse(cfg, "master"))) {
@@ -183,14 +183,14 @@ static int load_config(int reload)
/* Columns */ /* Columns */
if (load_column_config(ast_variable_retrieve(cfg, "master", "columns"))) { if (load_column_config(ast_variable_retrieve(cfg, "master", "columns"))) {
ast_config_destroy(cfg); ast_config_destroy(cfg);
free_config(); free_config(0);
return -1; return -1;
} }
/* Values */ /* Values */
if (load_values_config(ast_variable_retrieve(cfg, "master", "values"))) { if (load_values_config(ast_variable_retrieve(cfg, "master", "values"))) {
ast_config_destroy(cfg); ast_config_destroy(cfg);
free_config(); free_config(0);
return -1; return -1;
} }
@@ -201,11 +201,11 @@ static int load_config(int reload)
return 0; return 0;
} }
static void free_config(void) static void free_config(int reload)
{ {
struct values *value; struct values *value;
if (db) { if (!reload && db) {
sqlite3_close(db); sqlite3_close(db);
db = NULL; db = NULL;
} }
@@ -288,7 +288,7 @@ static int unload_module(void)
{ {
ast_cdr_unregister(name); ast_cdr_unregister(name);
free_config(); free_config(0);
return 0; return 0;
} }
@@ -309,7 +309,7 @@ static int load_module(void)
res = sqlite3_open(filename, &db); res = sqlite3_open(filename, &db);
if (res != SQLITE_OK) { if (res != SQLITE_OK) {
ast_log(LOG_ERROR, "Could not open database %s.\n", filename); ast_log(LOG_ERROR, "Could not open database %s.\n", filename);
free_config(); free_config(0);
return AST_MODULE_LOAD_DECLINE; return AST_MODULE_LOAD_DECLINE;
} }
@@ -325,7 +325,7 @@ static int load_module(void)
if (res != SQLITE_OK) { if (res != SQLITE_OK) {
ast_log(LOG_WARNING, "Unable to create table '%s': %s.\n", table, error); ast_log(LOG_WARNING, "Unable to create table '%s': %s.\n", table, error);
sqlite3_free(error); sqlite3_free(error);
free_config(); free_config(0);
return AST_MODULE_LOAD_DECLINE; return AST_MODULE_LOAD_DECLINE;
} }
} }
@@ -333,7 +333,7 @@ static int load_module(void)
res = ast_cdr_register(name, desc, sqlite3_log); res = ast_cdr_register(name, desc, sqlite3_log);
if (res) { if (res) {
ast_log(LOG_ERROR, "Unable to register custom SQLite3 CDR handling\n"); ast_log(LOG_ERROR, "Unable to register custom SQLite3 CDR handling\n");
free_config(); free_config(0);
return AST_MODULE_LOAD_DECLINE; return AST_MODULE_LOAD_DECLINE;
} }