changeset 8696:20345491824c HEAD

auth: Using "username" or "domain" passdb fields caused problems with cache and blocking passdbs.
author Timo Sirainen <tss@iki.fi>
date Sat, 31 Jan 2009 20:15:12 +0200
parents e296435586c1
children c9ed3bf730b9
files src/auth/auth-request.c
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Thu Jan 29 19:25:02 2009 -0500
+++ b/src/auth/auth-request.c	Sat Jan 31 20:15:12 2009 +0200
@@ -981,7 +981,7 @@
 			    const char *name, const char *value,
 			    const char *default_scheme)
 {
-	const char *p;
+	const char *p, *orig_value;
 
 	i_assert(*name != '\0');
 	i_assert(value != NULL);
@@ -999,6 +999,7 @@
 	if (strcmp(name, "user") == 0 ||
 	    strcmp(name, "username") == 0 || strcmp(name, "domain") == 0) {
 		/* update username */
+		orig_value = value;
 		if (strcmp(name, "username") == 0 &&
 		    strchr(value, '@') == NULL &&
 		    (p = strchr(request->user, '@')) != NULL) {
@@ -1023,6 +1024,9 @@
 				request->user, value);
 			request->user = p_strdup(request->pool, value);
 		}
+		/* restore the original value so it gets saved correctly to
+		   cache. */
+		value = orig_value;
 	} else if (strcmp(name, "nodelay") == 0) {
 		/* don't delay replying to client of the failure */
 		request->no_failure_delay = TRUE;