diff src/auth/auth-request.c @ 4164:d38dd6312be1 HEAD

Master login fixes, PLAIN authentication was still broken..
author Timo Sirainen <tss@iki.fi>
date Wed, 12 Apr 2006 14:27:17 +0300
parents bdf68bc43354
children 3f27bf7832a2
line wrap: on
line diff
--- a/src/auth/auth-request.c	Wed Apr 12 11:03:54 2006 +0300
+++ b/src/auth/auth-request.c	Wed Apr 12 14:27:17 2006 +0300
@@ -561,7 +561,7 @@
 bool auth_request_set_username(struct auth_request *request,
 			       const char *username, const char **error_r)
 {
-	const char *p;
+	const char *p, *login_username = NULL;
 
 	if (request->original_username == NULL) {
 		/* the username may change later, but we need to use this
@@ -579,13 +579,7 @@
 		p = strchr(username, request->auth->master_user_separator);
 		if (p != NULL) {
 			/* it does, set it. */
-			const char *login_username;
-
 			login_username = t_strdup_until(username, p);
-			if (!auth_request_set_login_username(request,
-							     login_username,
-							     error_r))
-				return FALSE;
 
 			/* username is the master user */
 			username = p + 1;
@@ -599,7 +593,16 @@
 	}
 
         request->user = auth_request_fix_username(request, username, error_r);
-        return request->user != NULL;
+	if (request->user == NULL)
+		return FALSE;
+
+	if (login_username != NULL) {
+		if (!auth_request_set_login_username(request,
+						     login_username,
+						     error_r))
+			return FALSE;
+	}
+	return TRUE;
 }
 
 bool auth_request_set_login_username(struct auth_request *request,
@@ -608,17 +611,17 @@
 {
         i_assert(*username != '\0');
 
+	if (strcmp(username, request->user) == 0) {
+		/* The usernames are the same, we don't really wish to log
+		   in as someone else */
+		return TRUE;
+	}
+
         /* lookup request->user from masterdb first */
         request->passdb = request->auth->masterdbs;
 
         request->requested_login_user =
                 auth_request_fix_username(request, username, error_r);
-	if (request->user != NULL &&
-	    strcmp(request->requested_login_user, request->user) == 0) {
-		/* The usernames are the same, we don't really wish to log
-		   in as someone else */
-		request->requested_login_user = NULL;
-	}
 	return request->requested_login_user != NULL;
 }