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);
}
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);
}