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,
{
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;
}
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;
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),
-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,
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);
}
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) {
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();
}
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) {
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);