dovecot-2.0: lib-sql: Fail if trying to register a duplicate sql...

dovecot at dovecot.org dovecot at dovecot.org
Thu Aug 12 19:59:06 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/11538925cbbb
changeset: 11991:11538925cbbb
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Aug 12 17:59:03 2010 +0100
description:
lib-sql: Fail if trying to register a duplicate sql driver.

diffstat:

 src/lib-sql/sql-api.c |  32 ++++++++++++++++++--------------
 1 files changed, 18 insertions(+), 14 deletions(-)

diffs (58 lines):

diff -r 4d8ae218af73 -r 11538925cbbb src/lib-sql/sql-api.c
--- a/src/lib-sql/sql-api.c	Thu Aug 12 17:31:46 2010 +0100
+++ b/src/lib-sql/sql-api.c	Thu Aug 12 17:59:03 2010 +0100
@@ -21,8 +21,25 @@
 	array_free(&sql_drivers);
 }
 
+static const struct sql_db *sql_driver_lookup(const char *name)
+{
+	const struct sql_db *const *drivers;
+	unsigned int i, count;
+
+	drivers = array_get(&sql_drivers, &count);
+	for (i = 0; i < count; i++) {
+		if (strcmp(drivers[i]->name, name) == 0)
+			return drivers[i];
+	}
+	return NULL;
+}
+
 void sql_driver_register(const struct sql_db *driver)
 {
+	if (sql_driver_lookup(driver->name) != NULL) {
+		i_fatal("sql_driver_register(%s): Already registered",
+			driver->name);
+	}
 	array_append(&sql_drivers, &driver, 1);
 }
 
@@ -40,19 +57,6 @@
 	}
 }
 
-static const struct sql_db *sql_find_driver(const char *name)
-{
-	const struct sql_db *const *drivers;
-	unsigned int i, count;
-
-	drivers = array_get(&sql_drivers, &count);
-	for (i = 0; i < count; i++) {
-		if (strcmp(drivers[i]->name, name) == 0)
-			return drivers[i];
-	}
-	return NULL;
-}
-
 struct sql_db *sql_init(const char *db_driver, const char *connect_string)
 {
 	const struct sql_db *driver;
@@ -60,7 +64,7 @@
 
 	i_assert(connect_string != NULL);
 
-	driver = sql_find_driver(db_driver);
+	driver = sql_driver_lookup(db_driver);
 	if (driver == NULL)
 		i_fatal("Unknown database driver '%s'", db_driver);
 


More information about the dovecot-cvs mailing list