]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Fixed master user logins.
authorTimo Sirainen <tss@iki.fi>
Fri, 19 Mar 2010 19:34:03 +0000 (21:34 +0200)
committerTimo Sirainen <tss@iki.fi>
Fri, 19 Mar 2010 19:34:03 +0000 (21:34 +0200)
--HG--
branch : HEAD

src/auth/auth-request.c
src/auth/auth.c

index 9208e7a922ffbf55f5c3d0d02b234501931d415e..98591c454fa38a76ef9631cd8eb60841e2c3c8e4 100644 (file)
@@ -71,7 +71,8 @@ void auth_request_init(struct auth_request *request)
 
        auth = auth_request_get_auth(request);
        request->set = auth->set;
-       request->passdb = auth->passdbs;
+       request->passdb = auth->masterdbs != NULL ?
+               auth->masterdbs : auth->passdbs;
        request->userdb = auth->userdbs;
 }
 
index 2a71dd308def710a9ef0ff558c1f48bc39967212..e8175cc4585602deb36f4f4210c07c6717d700a4 100644 (file)
@@ -17,14 +17,15 @@ struct auth_userdb_settings userdb_dummy_set = {
 static ARRAY_DEFINE(auths, struct auth *);
 
 static void
-auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set)
+auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set,
+                   struct auth_passdb **passdbs)
 {
        struct auth_passdb *auth_passdb, **dest;
 
        auth_passdb = p_new(auth->pool, struct auth_passdb, 1);
        auth_passdb->set = set;
 
-       for (dest = &auth->passdbs; *dest != NULL; dest = &(*dest)->next) ;
+       for (dest = passdbs; *dest != NULL; dest = &(*dest)->next) ;
        *dest = auth_passdb;
 
        auth_passdb->passdb =
@@ -73,7 +74,7 @@ auth_preinit(const struct auth_settings *set, const char *service, pool_t pool,
                if (passdbs[i]->master)
                        continue;
 
-               auth_passdb_preinit(auth, passdbs[i]);
+               auth_passdb_preinit(auth, passdbs[i], &auth->passdbs);
                passdb_count++;
                last_passdb = i;
        }
@@ -90,7 +91,7 @@ auth_preinit(const struct auth_settings *set, const char *service, pool_t pool,
                        i_fatal("Master passdb can't have pass=yes "
                                "if there are no passdbs");
                }
-               auth_passdb_preinit(auth, passdbs[i]);
+               auth_passdb_preinit(auth, passdbs[i], &auth->masterdbs);
        }
 
        if (array_is_created(&set->userdbs)) {