#include "ioloop.h"
#include "array.h"
#include "str.h"
-#include "auth-cache.h"
#include "settings.h"
#include "auth-settings.h"
#include "db-ldap.h"
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);
#include "settings.h"
#include "settings-parser.h"
-#include "auth-cache.h"
#include "db-sql.h"
#include <string.h>
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)
#include "auth-common.h"
#include "array.h"
#include "ipwd.h"
+#include "auth-cache.h"
#include "auth-worker-connection.h"
#include "userdb.h"
}
}
+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)
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);