dovecot-2.0-sslstream: Added mail_storage_service_init_settings().
dovecot at dovecot.org
dovecot at dovecot.org
Sat Feb 13 02:56:08 EET 2010
details: http://hg.dovecot.org/dovecot-2.0-sslstream/rev/4109e7f29735
changeset: 10274:4109e7f29735
user: Timo Sirainen <tss at iki.fi>
date: Mon Nov 09 13:42:16 2009 -0500
description:
Added mail_storage_service_init_settings().
diffstat:
2 files changed, 15 insertions(+), 10 deletions(-)
src/lib-storage/mail-storage-service.c | 20 ++++++++++----------
src/lib-storage/mail-storage-service.h | 5 +++++
diffs (81 lines):
diff -r 26e6636aa82e -r 4109e7f29735 src/lib-storage/mail-storage-service.c
--- a/src/lib-storage/mail-storage-service.c Mon Nov 09 13:41:38 2009 -0500
+++ b/src/lib-storage/mail-storage-service.c Mon Nov 09 13:42:16 2009 -0500
@@ -57,9 +57,6 @@ struct mail_storage_service_user {
static struct module *modules = NULL;
-static void
-mail_storage_service_all_init_first(struct mail_storage_service_ctx *ctx);
-
static void set_keyval(struct setting_parser_context *set_parser,
const char *key, const char *value)
{
@@ -501,8 +498,7 @@ struct auth_master_connection *
struct auth_master_connection *
mail_storage_service_get_auth_conn(struct mail_storage_service_ctx *ctx)
{
- if (ctx->conn == NULL)
- mail_storage_service_all_init_first(ctx);
+ i_assert(ctx->conn != NULL);
return ctx->conn;
}
@@ -626,6 +622,8 @@ mail_storage_service_first_init(struct m
{
const struct mail_storage_settings *mail_set;
+ i_assert(ctx->conn == NULL);
+
mail_set = mail_user_set_get_driver_settings(user_info, user_set,
MAIL_STORAGE_SET_DRIVER_NAME);
ctx->debug = mail_set->mail_debug;
@@ -813,8 +811,8 @@ void mail_storage_service_user_free(stru
pool_unref(&user->pool);
}
-static void
-mail_storage_service_all_init_first(struct mail_storage_service_ctx *ctx)
+void mail_storage_service_init_settings(struct mail_storage_service_ctx *ctx,
+ const struct mail_storage_service_input *input)
{
const struct setting_parser_info *user_info;
const struct mail_user_settings *user_set;
@@ -822,8 +820,11 @@ mail_storage_service_all_init_first(stru
void **sets;
pool_t temp_pool;
+ if (ctx->conn != NULL)
+ return;
+
temp_pool = pool_alloconly_create("service all settings", 4096);
- if (mail_storage_service_read_settings(ctx, NULL, temp_pool,
+ if (mail_storage_service_read_settings(ctx, input, temp_pool,
&user_info, &error) < 0)
i_fatal("%s", error);
sets = settings_parser_get_list(ctx->service->set_parser);
@@ -838,8 +839,7 @@ mail_storage_service_all_init(struct mai
{
if (ctx->auth_list != NULL)
(void)auth_master_user_list_deinit(&ctx->auth_list);
- if (ctx->conn == NULL)
- mail_storage_service_all_init_first(ctx);
+ mail_storage_service_init_settings(ctx, NULL);
ctx->auth_list = auth_master_user_list_init(ctx->conn);
return auth_master_user_list_count(ctx->auth_list);
diff -r 26e6636aa82e -r 4109e7f29735 src/lib-storage/mail-storage-service.h
--- a/src/lib-storage/mail-storage-service.h Mon Nov 09 13:41:38 2009 -0500
+++ b/src/lib-storage/mail-storage-service.h Mon Nov 09 13:42:16 2009 -0500
@@ -46,6 +46,11 @@ int mail_storage_service_read_settings(s
pool_t pool,
const struct setting_parser_info **user_info_r,
const char **error_r);
+/* Read settings and initialize context to use them. Do nothing if service is
+ already initialized. This is mainly necessary when calling _get_auth_conn()
+ or _all_init(). */
+void mail_storage_service_init_settings(struct mail_storage_service_ctx *ctx,
+ const struct mail_storage_service_input *input);
/* Returns 1 if ok, 0 if user wasn't found, -1 if error. */
int mail_storage_service_lookup(struct mail_storage_service_ctx *ctx,
const struct mail_storage_service_input *input,
More information about the dovecot-cvs
mailing list