dovecot-2.0: auth: Fixed master user logins.

dovecot at dovecot.org dovecot at dovecot.org
Fri Mar 19 21:34:06 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/b05793c609ac
changeset: 10960:b05793c609ac
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Mar 19 21:34:03 2010 +0200
description:
auth: Fixed master user logins.

diffstat:

 src/auth/auth-request.c |  3 ++-
 src/auth/auth.c         |  9 +++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diffs (52 lines):

diff -r 9621bb06b15c -r b05793c609ac src/auth/auth-request.c
--- a/src/auth/auth-request.c	Fri Mar 19 20:56:22 2010 +0200
+++ b/src/auth/auth-request.c	Fri Mar 19 21:34:03 2010 +0200
@@ -71,7 +71,8 @@
 
 	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;
 }
 
diff -r 9621bb06b15c -r b05793c609ac src/auth/auth.c
--- a/src/auth/auth.c	Fri Mar 19 20:56:22 2010 +0200
+++ b/src/auth/auth.c	Fri Mar 19 21:34:03 2010 +0200
@@ -17,14 +17,15 @@
 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 @@
 		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 @@
 			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)) {


More information about the dovecot-cvs mailing list