return TRUE;
}
+static bool
+master_service_set_has_config_override(struct master_service *service,
+ const char *key);
+
static void
master_service_set_process_shutdown_filter_wrapper(struct event_filter *filter)
{
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)
+ enum master_service_set_type type, const char **error_r)
{
int ret;
+ if (type == MASTER_SERVICE_SET_TYPE_USERDB &&
+ master_service_set_has_config_override(master_service, key)) {
+ /* this setting was already overridden with -o parameter */
+ e_debug(master_service->event,
+ "Ignoring overridden (-o) userdb setting: %s",
+ key);
+ return 1;
+ }
+
+
ret = settings_parse_keyvalue(instance->parser, key, value);
if (ret <= 0)
*error_r = settings_parser_get_error(instance->parser);
return settings_parse_get_value(instance->parser, key, type_r);
}
-bool master_service_set_has_config_override(struct master_service *service,
- const char *key)
+static bool
+master_service_set_has_config_override(struct master_service *service,
+ const char *key)
{
const char *override, *key_root;
bool ret;
master_service_settings_find(struct master_service_settings_instance *instance,
const char *key, enum setting_type *type_r);
-/* Returns TRUE if -o key=value parameter was used. Setting keys in overrides
- and parameter are unaliased before comparing. */
-bool master_service_set_has_config_override(struct master_service *service,
- const char *key);
-
/* Return a new instance for settings. */
struct master_service_settings_instance *
master_service_settings_instance_new(struct master_service *service);
{
const char *error;
- if (master_service_set_has_config_override(user->service_ctx->service, key)) {
- /* this setting was already overridden with -o parameter */
- e_debug(user->event,
- "Ignoring overridden (-o) userdb setting: %s",
- key);
- return;
- }
-
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);
}
-static int set_keyvalue(struct mail_storage_service_ctx *ctx,
- struct mail_storage_service_user *user,
+static int set_keyvalue(struct mail_storage_service_user *user,
const char *key, const char *value,
const char **error_r)
{
old_value = master_service_settings_find(user->set_instance, key, &type);
}
- if (master_service_set_has_config_override(ctx->service, key)) {
- /* this setting was already overridden with -o parameter */
- e_debug(user->event, "Ignoring overridden (-o) userdb setting: %s",
- key);
- return 1;
- }
-
if (append_value != NULL) {
if (old_value == NULL || type != SET_STR) {
*error_r = "'+' can only be used for strings";
}
static int
-user_reply_handle(struct mail_storage_service_ctx *ctx,
- struct mail_storage_service_user *user,
+user_reply_handle(struct mail_storage_service_user *user,
const struct auth_user_reply *reply,
const char **error_r)
{
} else if (strcmp(key, "admin") == 0) {
user->admin = strchr("1Yy", value[0]) != NULL;
} else T_BEGIN {
- ret = set_keyvalue(ctx, user, key, value, &error);
+ ret = set_keyvalue(user, key, value, &error);
} T_END_PASS_STR_IF(ret < 0, &error);
if (ret < 0)
break;
&reply, &error);
if (ret2 == 0) {
array_sort(&reply.extra_fields, extra_field_key_cmp_p);
- ret2 = user_reply_handle(ctx, user, &reply, &error);
+ ret2 = user_reply_handle(user, &reply, &error);
}
if (ret2 < 0) {