From: Timo Sirainen Date: Wed, 8 Mar 2023 14:56:20 +0000 (+0200) Subject: lib-master, global: master_service_set() - Remove error handling X-Git-Tag: 2.4.0~2229 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3d9f59dbfe53f49f77e3558f40beca8d9551178;p=thirdparty%2Fdovecot%2Fcore.git lib-master, global: master_service_set() - Remove error handling This function can no longer fail. --- diff --git a/src/doveadm/doveadm-dsync.c b/src/doveadm/doveadm-dsync.c index dc230a32cb..7e4b7f3233 100644 --- a/src/doveadm/doveadm-dsync.c +++ b/src/doveadm/doveadm-dsync.c @@ -468,9 +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, - MASTER_SERVICE_SET_TYPE_CODE, &error) <= 0) - i_unreached(); + master_service_set(set_instance, "mail_location", location, + MASTER_SERVICE_SET_TYPE_CODE); ret = mail_storage_service_next(ctx->ctx.storage_service, ctx->ctx.cur_service_user, &user2, &error); diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index a787a5c8df..d3643b94dc 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -329,14 +329,13 @@ static int cmd_force_resync_box(struct doveadm_mail_cmd_context *_ctx, static int cmd_force_resync_prerun(struct doveadm_mail_cmd_context *ctx ATTR_UNUSED, struct mail_storage_service_user *service_user, - const char **error_r) + const char **error_r ATTR_UNUSED) { 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", - MASTER_SERVICE_SET_TYPE_CODE, error_r) <= 0) - i_unreached(); + master_service_set(set_instance, + "mailbox_list_index_very_dirty_syncs", "no", + MASTER_SERVICE_SET_TYPE_CODE); return 0; } diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index bc31b79629..52caae0041 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -1114,10 +1114,9 @@ master_service_settings_get_or_fatal(struct event *event, return set; } -int master_service_set(struct master_service_settings_instance *instance, - const char *key, const char *value, - enum master_service_set_type type, - const char **error_r ATTR_UNUSED) +void master_service_set(struct master_service_settings_instance *instance, + const char *key, const char *value, + enum master_service_set_type type) { if (!array_is_created(&instance->settings)) p_array_init(&instance->settings, instance->pool, 16); @@ -1133,7 +1132,6 @@ int master_service_set(struct master_service_settings_instance *instance, set->key = p_strdup(instance->pool, key); } set->value = p_strdup(instance->pool, value); - return 1; } struct master_service_settings_instance * diff --git a/src/lib-master/master-service-settings.h b/src/lib-master/master-service-settings.h index 5b4889bd9f..5b847d89e1 100644 --- a/src/lib-master/master-service-settings.h +++ b/src/lib-master/master-service-settings.h @@ -196,11 +196,10 @@ master_service_settings_get_or_fatal(struct event *event, } \ } STMT_END -/* Set key=value to settings parser. Returns 1 on success, 0 if key is unknown, - -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, - enum master_service_set_type type, const char **error_r); +/* Override a setting. */ +void master_service_set(struct master_service_settings_instance *instance, + const char *key, const char *value, + enum master_service_set_type type); /* Return a new instance for settings. */ struct master_service_settings_instance * diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index f27ae9a6b6..7857e0293f 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -96,37 +96,25 @@ struct module *mail_storage_service_modules = NULL; static void set_keyval(struct mail_storage_service_user *user, const char *key, const char *value) { - const char *error; - - 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); + master_service_set(user->set_instance, key, value, + MASTER_SERVICE_SET_TYPE_USERDB); } -static int set_keyvalue(struct mail_storage_service_user *user, - const char *key, const char *value, - const char **error_r) +static void set_keyvalue(struct mail_storage_service_user *user, + const char *key, const char *value) { - int ret; - /* Ignore empty keys rather than prepend 'plugin/=' to them. */ if (*key == '\0') - return 1; + return; - ret = master_service_set(user->set_instance, key, value, - MASTER_SERVICE_SET_TYPE_USERDB, error_r); - if (ret < 0) - return -1; + master_service_set(user->set_instance, key, value, + MASTER_SERVICE_SET_TYPE_USERDB); if (strstr(key, "pass") != NULL) { /* possibly a password field (e.g. imapc_password). hide the value. */ value = ""; } - if (ret == 0) - e_debug(user->event, "Unknown userdb setting: %s", key); - else - e_debug(user->event, "Added userdb setting: %s=%s", key, value); - return ret; + e_debug(user->event, "Added userdb setting: %s=%s", key, value); } static bool validate_chroot(const struct mail_user_settings *user_set, @@ -157,9 +145,8 @@ user_reply_handle(struct mail_storage_service_user *user, { const char *home = reply->home; const char *chroot = reply->chroot; - const char *const *str, *p, *error = NULL; + const char *const *str, *p; unsigned int i, count; - int ret = 0; if (reply->uid != (uid_t)-1) { if (reply->uid == 0) { @@ -230,19 +217,11 @@ user_reply_handle(struct mail_storage_service_user *user, user->auth_user = p_strdup(user->pool, value); } else if (strcmp(key, "admin") == 0) { user->admin = strchr("1Yy", value[0]) != NULL; - } else T_BEGIN { - ret = set_keyvalue(user, key, value, &error); - } T_END_PASS_STR_IF(ret < 0, &error); - if (ret < 0) - break; - } - - if (ret < 0) { - i_assert(error != NULL); - *error_r = t_strdup_printf("Invalid userdb input '%s': %s", - str[i], error); + } else { + set_keyvalue(user, key, value); + } } - return ret; + return 0; } static int @@ -1222,9 +1201,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", - MASTER_SERVICE_SET_TYPE_CODE, &error) <= 0) - i_unreached(); + master_service_set(user->set_instance, "mail_debug", "yes", + MASTER_SERVICE_SET_TYPE_CODE); } if (userdb_fields != NULL) { @@ -1252,9 +1230,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", "", - MASTER_SERVICE_SET_TYPE_CODE, &error) <= 0) - i_unreached(); + master_service_set(user->set_instance, "mail_plugins", "", + MASTER_SERVICE_SET_TYPE_CODE); } if (ret > 0) { mail_storage_service_update_chroot(user); diff --git a/src/lmtp/lmtp-local.c b/src/lmtp/lmtp-local.c index 001ded18c7..d3590f8e9e 100644 --- a/src/lmtp/lmtp-local.c +++ b/src/lmtp/lmtp-local.c @@ -469,10 +469,8 @@ lmtp_local_deliver(struct lmtp_local *local, const char *value = t_strdup_printf("%us", proxy_data.timeout_secs <= 1 ? 1 : proxy_data.timeout_secs-1); - if (master_service_set(set_instance, "mail_max_lock_timeout", - value, MASTER_SERVICE_SET_TYPE_CODE, - &error) <= 0) - i_unreached(); + master_service_set(set_instance, "mail_max_lock_timeout", + value, MASTER_SERVICE_SET_TYPE_CODE); } master_service_settings_free(mail_set);