All pastes #1469960 Raw Edit

clueless

public text v1 · immutable
#1469960 ·published 2009-06-22 15:38 UTC
rendered paste body
Index: cel/cel_sqlite3_custom.c===================================================================--- cel/cel_sqlite3_custom.c	(revision 202372)+++ cel/cel_sqlite3_custom.c	(working copy)@@ -64,7 +64,6 @@ static sqlite3 *db = NULL;  static char table[80];-/*! XXX \bug Handling of this var is crash prone on reloads */ static char *columns; static struct ast_event_sub *event_sub = NULL; @@ -75,7 +74,7 @@  static AST_LIST_HEAD_STATIC(sql_values, values); -static int free_config(void);+static void free_config(void);  static int load_column_config(const char *tmp) {@@ -168,12 +167,12 @@ 		return 0; 	} +	ast_mutex_lock(&lock);+ 	if (reload) { 		free_config(); 	} -	ast_mutex_lock(&lock);- 	if (!(mappingvar = ast_variable_browse(cfg, "master"))) { 		/* Nothing configured */ 		ast_mutex_unlock(&lock);@@ -213,12 +212,10 @@ 	return 0; } -static int free_config(void)+static void free_config(void) { 	struct values *value; -	ast_mutex_lock(&lock);- 	if (db) { 		sqlite3_close(db); 		db = NULL;@@ -232,10 +229,6 @@ 	while ((value = AST_LIST_REMOVE_HEAD(&sql_values, list))) { 		ast_free(value); 	}--	ast_mutex_unlock(&lock);--	return 0; }  static void sqlite3_log(const struct ast_event *event, void *userdata)@@ -301,12 +294,12 @@  static int unload_module(void) {-	free_config();- 	if (event_sub) { 		event_sub = ast_event_unsubscribe(event_sub); 	} +	free_config();+ 	return 0; } @@ -317,24 +310,18 @@ 	int res; 	char *sql; -	if (!load_config(0)) {-		event_sub = ast_event_subscribe(AST_EVENT_CEL, sqlite3_log, "CEL sqlite3 custom backend", NULL, AST_EVENT_IE_END);-		if (!event_sub) {-			ast_log(LOG_ERROR, "Unable to register custom SQLite3 CEL handling\n");-			free_config();-			return AST_MODULE_LOAD_DECLINE;-		}-	} else {+	if (load_config(0)) { 		return AST_MODULE_LOAD_DECLINE; 	} +	ast_mutex_lock(&lock);+ 	/* is the database there? */ 	snprintf(filename, sizeof(filename), "%s/master.db", ast_config_AST_LOG_DIR); 	res = sqlite3_open(filename, &db); 	if (res != SQLITE_OK) { 		ast_log(LOG_ERROR, "Could not open database %s.\n", filename);-		free_config();-		return AST_MODULE_LOAD_DECLINE;+		goto declined; 	}  	/* is the table there? */@@ -349,12 +336,25 @@ 		if (res != SQLITE_OK) { 			ast_log(LOG_WARNING, "Unable to create table '%s': %s.\n", table, error); 			sqlite3_free(error);-			free_config();-			return AST_MODULE_LOAD_DECLINE;+			goto declined; 		} 	} +	event_sub = ast_event_subscribe(AST_EVENT_CEL, sqlite3_log, "CEL sqlite3 custom backend", NULL, AST_EVENT_IE_END);+	if (!event_sub) {+		ast_log(LOG_ERROR, "Unable to register custom SQLite3 CEL handling\n");+		goto declined;+	}++	ast_mutex_unlock(&lock);+ 	return AST_MODULE_LOAD_SUCCESS;++  declined:+	free_config();+	ast_mutex_unlock(&lock);++	return AST_MODULE_LOAD_DECLINE; }  static int reload(void)