]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
pop3: Use master_service_settings_parser_get()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 5 Jan 2023 02:15:37 +0000 (04:15 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:11:41 +0000 (14:11 +0200)
src/pop3/main.c
src/pop3/pop3-client.c
src/pop3/pop3-settings.c
src/pop3/pop3-settings.h

index 1b31a07d128e0b3abb4ba2fc5959d305554fd83d..ee538d30c1705d7289191cc8b8c78d70cbf1f742 100644 (file)
@@ -13,6 +13,7 @@
 #include "restrict-access.h"
 #include "settings-parser.h"
 #include "master-service.h"
+#include "master-service-settings.h"
 #include "login-server.h"
 #include "master-interface.h"
 #include "master-admin-client.h"
@@ -146,8 +147,17 @@ client_create_from_input(const struct mail_storage_service_input *input,
        }
        restrict_access_allow_coredumps(TRUE);
 
-       set = settings_parser_get_root_set(mail_user->set_parser,
-                       &pop3_setting_parser_info);
+       if (master_service_settings_parser_get(mail_user->event,
+                       mail_user->set_parser, &pop3_setting_parser_info,
+                       MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
+                       &set, error_r) < 0) {
+               if (write(fd_out, lookup_error_str, strlen(lookup_error_str)) < 0) {
+                       /* ignored */
+               }
+               mail_user_deinit(&mail_user);
+               event_unref(&event);
+               return -1;
+       }
        if (set->verbose_proctitle)
                verbose_proctitle = TRUE;
 
index 4ef2c4e1513893b7b196f9533eeabafdbd22c577..cae9373310dc1b1c46e6a01cd01201f1a0b4d8fc 100644 (file)
@@ -16,6 +16,7 @@
 #include "file-dotlock.h"
 #include "var-expand.h"
 #include "master-service.h"
+#include "master-service-settings.h"
 #include "mail-storage.h"
 #include "mail-storage-service.h"
 #include "mail-autoexpunge.h"
@@ -650,6 +651,7 @@ static void client_default_destroy(struct client *client, const char *reason)
        pop3_refresh_proctitle();
        mail_user_autoexpunge(client->user);
        mail_user_deinit(&client->user);
+       master_service_settings_free(client->set);
 
        pop3_client_count--;
        DLLIST_REMOVE(&pop3_clients, client);
index 9c8aa11513283296f261baee45bfe1c7c8833052..03e70c77cc169012ab09f93b3c2cd01b8b1cac8c 100644 (file)
@@ -120,6 +120,7 @@ const struct setting_parser_info pop3_setting_parser_info = {
        .defaults = &pop3_default_settings,
 
        .struct_size = sizeof(struct pop3_settings),
+       .pool_offset1 = 1 + offsetof(struct pop3_settings, pool),
        .check_func = pop3_settings_verify,
        .dependencies = pop3_setting_dependencies
 };
index cf50f980d530bf41e8b8a369589e0d1a8df264c8..91fe88bad6d9c43f0a9065172629bf3da1c44dd8 100644 (file)
@@ -15,6 +15,7 @@ enum pop3_delete_type {
 /* </settings checks> */
 
 struct pop3_settings {
+       pool_t pool;
        bool verbose_proctitle;
        const char *rawlog_dir;