]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 223136 via svnmerge from
authorMatthew Nicholson <mnicholson@digium.com>
Fri, 9 Oct 2009 17:27:44 +0000 (17:27 +0000)
committerMatthew Nicholson <mnicholson@digium.com>
Fri, 9 Oct 2009 17:27:44 +0000 (17:27 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@223171 65c4cc65-6c06-0410-ace0-fbb531ad65f3

cdr/cdr_sqlite3_custom.c

index 64981191d19380bd02f74e2713e9ec6372affb4e..eee9c99dd792217d0992429fd0905dbe02632aa1 100644 (file)
@@ -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)
 {
@@ -168,7 +168,7 @@ static int load_config(int reload)
                return 0;
 
        if (reload)
-               free_config();
+               free_config(1);
 
        if (!(mappingvar = ast_variable_browse(cfg, "master"))) {
                /* Nothing configured */
@@ -189,7 +189,7 @@ static int load_config(int reload)
        tmp = ast_variable_retrieve(cfg, "master", "columns");
        if (load_column_config(tmp)) {
                ast_config_destroy(cfg);
-               free_config();
+               free_config(0);
                return -1;
        }
 
@@ -197,7 +197,7 @@ static int load_config(int reload)
        tmp = ast_variable_retrieve(cfg, "master", "values");
        if (load_values_config(tmp)) {
                ast_config_destroy(cfg);
-               free_config();
+               free_config(0);
                return -1;
        }
 
@@ -208,11 +208,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;
        }
@@ -287,7 +287,7 @@ static int unload_module(void)
 {
        ast_cdr_unregister(name);
 
-       free_config();
+       free_config(0);
 
        return 0;
 }
@@ -308,7 +308,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;
        }
 
@@ -324,7 +324,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;
                }
        }
@@ -332,7 +332,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;
        }