]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master, global: Prepare master_service_set() for type parameter
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 6 Mar 2023 14:37:27 +0000 (16:37 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:20:55 +0000 (14:20 +0200)
src/doveadm/doveadm-dsync.c
src/doveadm/doveadm-mail.c
src/lib-master/master-service-settings.c
src/lib-master/master-service-settings.h
src/lib-storage/mail-storage-service.c
src/lmtp/lmtp-local.c

index ad122494f44849d50d074ef1b148c1e7dbd8cb45..dc230a32cb7de91807b153424d1d1fe1e996e259 100644 (file)
@@ -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,
index df1552c7ef911ec9bed0ff31d8589faa18156b66..3807d8d649c6e2434c97bee24c27dbfc152c609a 100644 (file)
@@ -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;
 }
index 4859d480a4a83fa5a596f34eb808cdce1d82dd9c..4f4d0f50966b2140a77bc5435565c8036af4cf2d 100644 (file)
@@ -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;
index 15a43b85ae1eb40aaa5cb0489c358f52f821b681..94f9803a2b615720251a0e890380f7f40dc9a5c9 100644 (file)
@@ -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,
index 3a80cacbde645c47048feb34b1a7e7d0b269978c..1e4c3980dc9bbe04cde23f13d495d9d013b1338b 100644 (file)
@@ -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) {
index 6e03004d2aaaf150359890615637dbb033cf4966..001ded18c7fbf080912f983519160cc0d258fc29 100644 (file)
@@ -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);