]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
quota-status: Use master_service_settings_get_or_fatal() and master_service_settings_...
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 5 Jan 2023 03:45:33 +0000 (05:45 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:11:41 +0000 (14:11 +0200)
src/plugins/quota/quota-status-settings.c
src/plugins/quota/quota-status-settings.h
src/plugins/quota/quota-status.c

index b88314f41370a23932278aca55c51b0ca6cf665f..2fcab88f3f55ed637ed01b31f1cab8de7db2b491 100644 (file)
@@ -30,5 +30,6 @@ const struct setting_parser_info quota_status_setting_parser_info = {
        .defaults = &quota_status_default_settings,
 
        .struct_size = sizeof(struct quota_status_settings),
+       .pool_offset1 = 1 + offsetof(struct quota_status_settings, pool),
        .dependencies = quota_status_setting_dependencies
 };
index e69a0aad468c14d3f9bee4c1a2004c3b43525a97..4782ff639c344081704102fbb169c2a65dc157d6 100644 (file)
@@ -2,6 +2,7 @@
 #define QUOTA_STATUS_SETTINGS_H 1
 
 struct quota_status_settings {
+       pool_t pool;
        const char *recipient_delimiter;
 };
 
index 826c183dce47ab3df62a386671e72323fce2c383..159f3876e2320bc4d45fdaaa1b385e463b59f69f 100644 (file)
@@ -39,8 +39,7 @@ static struct event_category event_category_quota_status = {
        .name = "quota-status"
 };
 
-static struct quota_status_settings *quota_status_settings;
-static pool_t quota_status_pool;
+static const struct quota_status_settings *quota_status_settings;
 static enum quota_protocol protocol;
 static struct mail_storage_service_ctx *storage_service;
 static struct connection_list *clients;
@@ -306,25 +305,28 @@ static void main_init(void)
        input.service = "quota-status";
        input.username = "";
 
-       quota_status_pool = pool_alloconly_create("quota status settings", 512);
        if (mail_storage_service_read_settings(storage_service, &input,
                                               &set_parser,
                                               &error) < 0)
                i_fatal("%s", error);
-       user_set = settings_parser_get_root_set(set_parser,
-                       &mail_user_setting_parser_info);
-       quota_status_settings = master_service_settings_get_root_set_dup(
-               master_service, &quota_status_setting_parser_info,
-               quota_status_pool);
+
+       if (master_service_settings_parser_get(NULL, set_parser,
+                       &mail_user_setting_parser_info,
+                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       &user_set, &error) < 0)
+               i_fatal("%s", error);
+       quota_status_settings = master_service_settings_get_or_fatal(NULL,
+               &quota_status_setting_parser_info);
 
        value = mail_user_set_plugin_getenv(user_set, "quota_status_nouser");
-       nouser_reply = p_strdup(quota_status_pool,
-                               value != NULL ? value : "REJECT Unknown user");
+       nouser_reply = i_strdup(value != NULL ? value : "REJECT Unknown user");
+       master_service_settings_free(user_set);
 }
 
 static void main_deinit(void)
 {
-       pool_unref(&quota_status_pool);
+       master_service_settings_free(quota_status_settings);
+       i_free(nouser_reply);
        connection_list_deinit(&clients);
        mail_storage_service_deinit(&storage_service);
 }