changeset 12558:f9d34d929c3f

auth: Master user login + prefetch userdb changed username to master user.
author Timo Sirainen <tss@iki.fi>
date Tue, 07 Dec 2010 02:00:45 +0000
parents 6a48a361c63f
children 7353e3253840
files src/auth/auth-request.c
diffstat 1 files changed, 18 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Tue Dec 07 01:50:43 2010 +0000
+++ b/src/auth/auth-request.c	Tue Dec 07 02:00:45 2010 +0000
@@ -354,6 +354,22 @@
 			  result == PASSDB_RESULT_OK);
 }
 
+static void auth_request_userdb_reply_update_user(struct auth_request *request)
+{
+	const char *str, *p;
+
+	str = t_strdup(auth_stream_reply_export(request->userdb_reply));
+
+	/* reset the reply and add the new username */
+	auth_stream_reply_reset(request->userdb_reply);
+	auth_stream_reply_add(request->userdb_reply, NULL, request->user);
+
+	/* add the rest */
+	p = strchr(str, '\t');
+	if (p != NULL)
+		auth_stream_reply_import(request->userdb_reply, p + 1);
+}
+
 static bool auth_request_master_lookup_finish(struct auth_request *request)
 {
 	struct auth_passdb *passdb;
@@ -368,6 +384,8 @@
 	request->master_user = request->user;
 	request->user = request->requested_login_user;
 	request->requested_login_user = NULL;
+	if (request->userdb_reply != NULL)
+		auth_request_userdb_reply_update_user(request);
 
 	request->skip_password_check = TRUE;
 	request->passdb_password = NULL;
@@ -1079,22 +1097,6 @@
 	auth_stream_reply_add(request->extra_fields, name, value);
 }
 
-static void auth_request_userdb_reply_update_user(struct auth_request *request)
-{
-	const char *str, *p;
-
-	str = t_strdup(auth_stream_reply_export(request->userdb_reply));
-
-	/* reset the reply and add the new username */
-	auth_stream_reply_reset(request->userdb_reply);
-	auth_stream_reply_add(request->userdb_reply, NULL, request->user);
-
-	/* add the rest */
-	p = strchr(str, '\t');
-	if (p != NULL)
-		auth_stream_reply_import(request->userdb_reply, p + 1);
-}
-
 static const char *
 get_updated_username(const char *old_username,
 		     const char *name, const char *value)