From: Timo Sirainen Date: Mon, 6 Mar 2023 14:37:27 +0000 (+0200) Subject: lib-master, global: Prepare master_service_set() for type parameter X-Git-Tag: 2.4.0~2249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12ef0da43e78730ad6a0f9be0856643d995ae217;p=thirdparty%2Fdovecot%2Fcore.git lib-master, global: Prepare master_service_set() for type parameter --- diff --git a/src/doveadm/doveadm-dsync.c b/src/doveadm/doveadm-dsync.c index ad122494f4..dc230a32cb 100644 --- a/src/doveadm/doveadm-dsync.c +++ b/src/doveadm/doveadm-dsync.c @@ -468,7 +468,8 @@ cmd_dsync_run_local(struct dsync_cmd_context *ctx, struct mail_user *user, second location. */ struct master_service_settings_instance *set_instance = mail_storage_service_user_get_settings_instance(ctx->ctx.cur_service_user); - if (master_service_set(set_instance, "mail_location", location, &error) <= 0) + if (master_service_set(set_instance, "mail_location", location, + MASTER_SERVICE_SET_TYPE_CODE, &error) <= 0) i_unreached(); ret = mail_storage_service_next(ctx->ctx.storage_service, ctx->ctx.cur_service_user, diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index df1552c7ef..3807d8d649 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -333,8 +333,9 @@ static int cmd_force_resync_prerun(struct doveadm_mail_cmd_context *ctx ATTR_UNU { struct master_service_settings_instance *set_instance = mail_storage_service_user_get_settings_instance(service_user); - if (master_service_set(set_instance, "mailbox_list_index_very_dirty_syncs", - "no", error_r) <= 0) + if (master_service_set(set_instance, + "mailbox_list_index_very_dirty_syncs", "no", + MASTER_SERVICE_SET_TYPE_CODE, error_r) <= 0) i_unreached(); return 0; } diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index 4859d480a4..4f4d0f5096 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -971,6 +971,7 @@ master_service_settings_get_or_fatal(struct event *event, int master_service_set(struct master_service_settings_instance *instance, const char *key, const char *value, + enum master_service_set_type type ATTR_UNUSED, const char **error_r) { int ret; diff --git a/src/lib-master/master-service-settings.h b/src/lib-master/master-service-settings.h index 15a43b85ae..94f9803a2b 100644 --- a/src/lib-master/master-service-settings.h +++ b/src/lib-master/master-service-settings.h @@ -10,6 +10,17 @@ struct master_service; struct master_settings_mmap; struct master_service_settings_instance; +enum master_service_set_type { + /* Setting is from userdb. */ + MASTER_SERVICE_SET_TYPE_USERDB, + /* Setting is from -o command line parameters. */ + MASTER_SERVICE_SET_TYPE_CLI_PARAM, + /* Setting is hardcoded to be overridden in the code. */ + MASTER_SERVICE_SET_TYPE_CODE, + + MASTER_SERVICE_SET_TYPE_COUNT, +}; + enum master_service_settings_get_flags { /* Don't call check_func()s */ MASTER_SERVICE_SETTINGS_GET_FLAG_NO_CHECK = BIT(0), @@ -195,7 +206,7 @@ master_service_settings_get_or_fatal(struct event *event, -1 on error. The error string is returned on <= 0. */ int master_service_set(struct master_service_settings_instance *instance, const char *key, const char *value, - const char **error_r); + enum master_service_set_type type, const char **error_r); /* Wrapper to settings_parse_get_value(). */ const void * master_service_settings_find(struct master_service_settings_instance *instance, diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 3a80cacbde..1e4c3980dc 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -107,7 +107,8 @@ static void set_keyval(struct mail_storage_service_user *user, return; } - if (master_service_set(user->set_instance, key, value, &error) < 0) + if (master_service_set(user->set_instance, key, value, + MASTER_SERVICE_SET_TYPE_USERDB, &error) < 0) i_fatal("Invalid userdb input %s=%s: %s", key, value, error); } @@ -155,7 +156,8 @@ static int set_keyvalue(struct mail_storage_service_ctx *ctx, value = t_strconcat(*strp, append_value, NULL); } - ret = master_service_set(user->set_instance, key, value, error_r); + ret = master_service_set(user->set_instance, key, value, + MASTER_SERVICE_SET_TYPE_USERDB, error_r); if (ret < 0) return -1; if (strstr(key, "pass") != NULL) { @@ -1319,7 +1321,8 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx, var_expand_ctx.user = user; if ((flags & MAIL_STORAGE_SERVICE_FLAG_DEBUG) != 0) { - if (master_service_set(user->set_instance, "mail_debug", "yes", &error) <= 0) + if (master_service_set(user->set_instance, "mail_debug", "yes", + MASTER_SERVICE_SET_TYPE_CODE, &error) <= 0) i_unreached(); } @@ -1348,7 +1351,8 @@ mail_storage_service_lookup_real(struct mail_storage_service_ctx *ctx, fine that extra plugins are loaded - we'll just need to prevent any of their hooks from being called. One easy way to do this is just to clear out the mail_plugins setting: */ - if (master_service_set(user->set_instance, "mail_plugins", "", &error) <= 0) + if (master_service_set(user->set_instance, "mail_plugins", "", + MASTER_SERVICE_SET_TYPE_CODE, &error) <= 0) i_unreached(); } if (ret > 0) { diff --git a/src/lmtp/lmtp-local.c b/src/lmtp/lmtp-local.c index 6e03004d2a..001ded18c7 100644 --- a/src/lmtp/lmtp-local.c +++ b/src/lmtp/lmtp-local.c @@ -470,7 +470,8 @@ lmtp_local_deliver(struct lmtp_local *local, proxy_data.timeout_secs <= 1 ? 1 : proxy_data.timeout_secs-1); if (master_service_set(set_instance, "mail_max_lock_timeout", - value, &error) <= 0) + value, MASTER_SERVICE_SET_TYPE_CODE, + &error) <= 0) i_unreached(); } master_service_settings_free(mail_set);