if (request->userdb_lookup_tempfailed) {
/* no caching */
- } else if (result != USERDB_RESULT_INTERNAL_FAILURE)
- auth_request_userdb_save_cache(request, result);
- else if (passdb_cache != NULL && userdb->cache_key != NULL) {
+ } else if (result != USERDB_RESULT_INTERNAL_FAILURE) {
+ if (!request->userdb_result_from_cache)
+ auth_request_userdb_save_cache(request, result);
+ } else if (passdb_cache != NULL && userdb->cache_key != NULL) {
/* lookup failed. if we're looking here only because the
request was expired in cache, fallback to using cached
expired record. */
request->private_callback.userdb = callback;
request->userdb_lookup = TRUE;
+ request->userdb_result_from_cache = FALSE;
if (request->userdb_reply == NULL)
auth_request_init_userdb_reply(request);
else {
if (auth_request_lookup_user_cache(request, cache_key,
&result, FALSE)) {
+ request->userdb_result_from_cache = TRUE;
auth_request_userdb_callback(result, request);
return;
}
/* userdb_* fields have been set by the passdb lookup, userdb prefetch
will work. */
unsigned int userdb_prefetch_set:1;
+ /* userdb lookup's results are from cache */
+ unsigned int userdb_result_from_cache:1;
unsigned int stats_sent:1;
unsigned int policy_refusal:1;
unsigned int policy_processed:1;