From: Timo Sirainen Date: Wed, 1 Apr 2009 21:30:52 +0000 (-0400) Subject: auth: Fixed loading known passdb/userdb plugins. X-Git-Tag: 1.2.rc1~20 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c99eaa4e3e07ee065580d163240b4ce95b66bef;p=thirdparty%2Fdovecot%2Fcore.git auth: Fixed loading known passdb/userdb plugins. --HG-- branch : HEAD --- diff --git a/src/auth/passdb.c b/src/auth/passdb.c index 2c0e3503b4..1be5a27483 100644 --- a/src/auth/passdb.c +++ b/src/auth/passdb.c @@ -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); } diff --git a/src/auth/userdb.c b/src/auth/userdb.c index dffcfdaed1..851ed1f873 100644 --- a/src/auth/userdb.c +++ b/src/auth/userdb.c @@ -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); }