dovecot-2.2: lib-storage: Use module_dir_try_load_missing() to l...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Feb 6 16:18:36 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/f64cf4d075c8
changeset: 18226:f64cf4d075c8
user: Timo Sirainen <tss at iki.fi>
date: Fri Feb 06 18:18:19 2015 +0200
description:
lib-storage: Use module_dir_try_load_missing() to load user plugins.
diffstat:
src/lib-storage/mail-storage-service.c | 33 ++++++++++++++++++++++-----------
1 files changed, 22 insertions(+), 11 deletions(-)
diffs (71 lines):
diff -r 88b09d5912c0 -r f64cf4d075c8 src/lib-storage/mail-storage-service.c
--- a/src/lib-storage/mail-storage-service.c Fri Feb 06 18:18:10 2015 +0200
+++ b/src/lib-storage/mail-storage-service.c Fri Feb 06 18:18:19 2015 +0200
@@ -968,17 +968,18 @@
auth_master_init(user_set->auth_socket_path, flags));
}
-static void
+static int
mail_storage_service_load_modules(struct mail_storage_service_ctx *ctx,
const struct setting_parser_info *user_info,
- const struct mail_user_settings *user_set)
+ const struct mail_user_settings *user_set,
+ const char **error_r)
{
struct module_dir_load_settings mod_set;
if (*user_set->mail_plugins == '\0')
- return;
+ return 0;
if ((ctx->flags & MAIL_STORAGE_SERVICE_FLAG_NO_PLUGINS) != 0)
- return;
+ return 0;
memset(&mod_set, 0, sizeof(mod_set));
mod_set.abi_version = DOVECOT_ABI_VERSION;
@@ -987,10 +988,10 @@
mod_set.require_init_funcs = TRUE;
mod_set.debug = mail_user_set_get_mail_debug(user_info, user_set);
- mail_storage_service_modules =
- module_dir_load_missing(mail_storage_service_modules,
- user_set->mail_plugin_dir,
- user_set->mail_plugins, &mod_set);
+ return module_dir_try_load_missing(&mail_storage_service_modules,
+ user_set->mail_plugin_dir,
+ user_set->mail_plugins,
+ &mod_set, error_r);
}
static int extra_field_key_cmp_p(const char *const *s1, const char *const *s2)
@@ -1086,7 +1087,12 @@
if (ctx->conn == NULL)
mail_storage_service_first_init(ctx, user_info, user_set);
/* load global plugins */
- mail_storage_service_load_modules(ctx, user_info, user_set);
+ if (mail_storage_service_load_modules(ctx, user_info, user_set, &error) < 0) {
+ i_error("%s", error);
+ pool_unref(&user_pool);
+ *error_r = MAIL_ERRSTR_CRITICAL_MSG;
+ return -1;
+ }
if (ctx->userdb_next_pool == NULL)
temp_pool = pool_alloconly_create("userdb lookup", 2048);
@@ -1152,8 +1158,13 @@
/* load per-user plugins */
if (ret > 0) {
- mail_storage_service_load_modules(ctx, user_info,
- user->user_set);
+ if (mail_storage_service_load_modules(ctx, user_info,
+ user->user_set,
+ &error) < 0) {
+ i_error("%s", error);
+ *error_r = MAIL_ERRSTR_CRITICAL_MSG;
+ ret = -2;
+ }
}
*user_r = user;
More information about the dovecot-cvs
mailing list