changeset 8888:4aa05d7d8b07 HEAD

auth: Fixed loading known passdb/userdb plugins.
author Timo Sirainen <tss@iki.fi>
date Wed, 01 Apr 2009 17:30:52 -0400
parents 7ddf32656d8c
children c5cb1f27caea
files src/auth/passdb.c src/auth/userdb.c
diffstat 2 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/passdb.c	Wed Apr 01 16:36:56 2009 -0400
+++ b/src/auth/passdb.c	Wed Apr 01 17:30:52 2009 -0400
@@ -25,7 +25,13 @@
 
 void passdb_register_module(struct passdb_module_interface *iface)
 {
-	if (passdb_interface_find(iface->name) != NULL) {
+	struct passdb_module_interface *old_iface;
+
+	old_iface = passdb_interface_find(iface->name);
+	if (old_iface != NULL && old_iface->verify_plain == NULL) {
+		/* replacing a "support not compiled in" passdb */
+		passdb_unregister_module(old_iface);
+	} else if (old_iface != NULL) {
 		i_panic("passdb_register_module(%s): Already registered",
 			iface->name);
 	}
--- a/src/auth/userdb.c	Wed Apr 01 16:36:56 2009 -0400
+++ b/src/auth/userdb.c	Wed Apr 01 17:30:52 2009 -0400
@@ -26,7 +26,13 @@
 
 void userdb_register_module(struct userdb_module_interface *iface)
 {
-	if (userdb_interface_find(iface->name) != NULL) {
+	struct userdb_module_interface *old_iface;
+
+	old_iface = userdb_interface_find(iface->name);
+	if (old_iface != NULL && old_iface->lookup == NULL) {
+		/* replacing a "support not compiled in" userdb */
+		userdb_unregister_module(old_iface);
+	} else if (old_iface != NULL) {
 		i_panic("userdb_register_module(%s): Already registered",
 			iface->name);
 	}