From: Timo Sirainen Date: Thu, 6 Nov 2025 13:19:21 +0000 (+0200) Subject: auth: Add and use userdb_set_cache_key() to set cache key X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f898ef4cc9cf198f7ac5990b8bb5acc1ab535eb;p=thirdparty%2Fdovecot%2Fcore.git auth: Add and use userdb_set_cache_key() to set cache key --- diff --git a/src/auth/userdb-ldap.c b/src/auth/userdb-ldap.c index 5fe795b656..fbe3ed7f4c 100644 --- a/src/auth/userdb-ldap.c +++ b/src/auth/userdb-ldap.c @@ -8,7 +8,6 @@ #include "ioloop.h" #include "array.h" #include "str.h" -#include "auth-cache.h" #include "settings.h" #include "auth-settings.h" #include "db-ldap.h" @@ -346,14 +345,12 @@ userdb_ldap_preinit(pool_t pool, struct event *event, db_ldap_get_attribute_names(pool, &ldap_post->iterate_fields, &module->iterate_attributes, NULL, NULL); - module->module.default_cache_key = !userdb_params->use_cache ? NULL : - auth_cache_parse_key_and_fields(pool, - t_strconcat(ldap_pre->ldap_base, - ldap_pre->userdb_ldap_filter, NULL), - &auth_post->fields, NULL); + const char *query = t_strconcat(ldap_pre->ldap_base, + ldap_pre->userdb_ldap_filter, NULL); + ret = userdb_set_cache_key(&module->module, userdb_params, pool, + query, &auth_post->fields, NULL, error_r); *module_r = &module->module; - ret = 0; failed: settings_free(auth_post); diff --git a/src/auth/userdb-sql.c b/src/auth/userdb-sql.c index 74972b4ecd..53bc35ea88 100644 --- a/src/auth/userdb-sql.c +++ b/src/auth/userdb-sql.c @@ -7,7 +7,6 @@ #include "settings.h" #include "settings-parser.h" -#include "auth-cache.h" #include "db-sql.h" #include @@ -319,13 +318,13 @@ userdb_sql_preinit(pool_t pool, struct event *event, return -1; } - module->module.default_cache_key = !userdb_params->use_cache ? NULL : - auth_cache_parse_key_and_fields(pool, set->query, - &post_set->fields, "sql"); + int ret = userdb_set_cache_key(&module->module, userdb_params, pool, + set->query, &post_set->fields, "sql", + error_r); settings_free(set); settings_free(post_set); *module_r = &module->module; - return 0; + return ret; } static void userdb_sql_init(struct userdb_module *_module) diff --git a/src/auth/userdb.c b/src/auth/userdb.c index 930f660f9f..9fd4148c90 100644 --- a/src/auth/userdb.c +++ b/src/auth/userdb.c @@ -3,6 +3,7 @@ #include "auth-common.h" #include "array.h" #include "ipwd.h" +#include "auth-cache.h" #include "auth-worker-connection.h" #include "userdb.h" @@ -98,6 +99,21 @@ gid_t userdb_parse_gid(struct auth_request *request, const char *str) } } +int userdb_set_cache_key(struct userdb_module *module, + const struct userdb_parameters *userdb_params, + pool_t pool, const char *query, + const ARRAY_TYPE(const_string) *fields, + const char *exclude_driver, const char **error_r ATTR_UNUSED) +{ + if (!userdb_params->use_cache) + return 0; + + module->default_cache_key = + auth_cache_parse_key_and_fields(pool, query, fields, + exclude_driver); + return 0; +} + struct userdb_module * userdb_preinit(pool_t pool, struct event *event, const struct auth_userdb_settings *set, bool use_cache) diff --git a/src/auth/userdb.h b/src/auth/userdb.h index cb4226fcc9..abd6970af2 100644 --- a/src/auth/userdb.h +++ b/src/auth/userdb.h @@ -78,6 +78,12 @@ uid_t userdb_parse_uid(struct auth_request *request, const char *str) gid_t userdb_parse_gid(struct auth_request *request, const char *str) ATTR_NULL(1); +int userdb_set_cache_key(struct userdb_module *module, + const struct userdb_parameters *userdb_params, + pool_t pool, const char *query, + const ARRAY_TYPE(const_string) *fields, + const char *exclude_driver, const char **error_r); + struct userdb_module * userdb_preinit(pool_t pool, struct event *event, const struct auth_userdb_settings *set, bool use_cache);