changeset 19610:a39061958832

auth: Apply passdb/userdb { override_fields } only after caching Now they're not be unnecessarily saved to cache to waste memory. More importantly they will always override the cached fields, which is required for %variables to work.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sat, 23 Jan 2016 13:57:54 +0200
parents e7e593e68fce
children e250af038f2d
files src/auth/auth-request.c
diffstat 1 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Fri Jan 22 19:06:59 2016 +0200
+++ b/src/auth/auth-request.c	Sat Jan 23 13:57:54 2016 +0200
@@ -676,6 +676,7 @@
 auth_request_verify_plain_callback_finish(enum passdb_result result,
 					  struct auth_request *request)
 {
+	passdb_template_export(request->passdb->passdb->override_fields_tmpl, request);
 	if (!auth_request_handle_passdb_callback(&result, request)) {
 		/* try next passdb */
 		auth_request_verify_plain(request, request->mech_password,
@@ -697,10 +698,9 @@
 
 	auth_request_set_state(request, AUTH_REQUEST_STATE_MECH_CONTINUE);
 
-	if (result != PASSDB_RESULT_INTERNAL_FAILURE) {
-		passdb_template_export(passdb->override_fields_tmpl, request);
+	if (result != PASSDB_RESULT_INTERNAL_FAILURE)
 		auth_request_save_cache(request, result);
-	} else {
+	else {
 		/* lookup failed. if we're looking here only because the
 		   request was expired in cache, fallback to using cached
 		   expired record. */
@@ -807,6 +807,7 @@
 				       size_t size,
 				       struct auth_request *request)
 {
+	passdb_template_export(request->passdb->passdb->override_fields_tmpl, request);
 	if (!auth_request_handle_passdb_callback(&result, request)) {
 		/* try next passdb */
 		if (request->skip_password_check &&
@@ -862,10 +863,9 @@
 
 	auth_request_set_state(request, AUTH_REQUEST_STATE_MECH_CONTINUE);
 
-	if (result != PASSDB_RESULT_INTERNAL_FAILURE) {
-		passdb_template_export(passdb->override_fields_tmpl, request);
+	if (result != PASSDB_RESULT_INTERNAL_FAILURE)
 		auth_request_save_cache(request, result);
-	} else {
+	else {
 		/* lookup failed. if we're looking here only because the
 		   request was expired in cache, fallback to using cached
 		   expired record. */