Mercurial > dovecot > original-hg > dovecot-1.2
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); }