]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master, global: master_service_set() - Remove error handling
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 8 Mar 2023 14:56:20 +0000 (16:56 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:20:55 +0000 (14:20 +0200)
This function can no longer fail.

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 dc230a32cb7de91807b153424d1d1fe1e996e259..7e4b7f3233a55b1090d844dc36e4f3b4c48e1b84 100644 (file)
@@ -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);
index a787a5c8dfb6d85d9e6988f4275991a6582c4138..d3643b94dc139c96f667f796b44bf98d5eeb516e 100644 (file)
@@ -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;
 }
 
index bc31b7962904071f7ee769d3f9544e8ea2329548..52caae004135195dd0a7c53e9a6a8c0581efa000 100644 (file)
@@ -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 *
index 5b4889bd9f41ce27ef76158e260bd0b00456d39a..5b847d89e1429aef38de8729fea4a6aeb860c9c3 100644 (file)
@@ -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 *
index f27ae9a6b62088322320973e7529140992d813a6..7857e0293fcef7de55ec124dd5dc277eccec5dc0 100644 (file)
@@ -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 = "<hidden>";
        }
-       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);
index 001ded18c7fbf080912f983519160cc0d258fc29..d3590f8e9ee861e821adb9408525048a4cbc1b4f 100644 (file)
@@ -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);