]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Fixed loading known passdb/userdb plugins.
authorTimo Sirainen <tss@iki.fi>
Wed, 1 Apr 2009 21:30:52 +0000 (17:30 -0400)
committerTimo Sirainen <tss@iki.fi>
Wed, 1 Apr 2009 21:30:52 +0000 (17:30 -0400)
--HG--
branch : HEAD

src/auth/passdb.c
src/auth/userdb.c

index 2c0e3503b4203fea7f0f457990c987dfe6c9dcab..1be5a27483e463d8afb171c7bd005db479a9bddb 100644 (file)
@@ -25,7 +25,13 @@ static struct passdb_module_interface *passdb_interface_find(const char *name)
 
 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);
        }
index dffcfdaed1e26fb4e59404db37e120cf9c3e9ed1..851ed1f873c558a596e981a576e5df59d1ee240c 100644 (file)
@@ -26,7 +26,13 @@ static struct userdb_module_interface *userdb_interface_find(const char *name)
 
 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);
        }