]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-ssl-iostream: Add ssl_client and ssl_server named filters
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 17 Dec 2024 13:46:28 +0000 (15:46 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:01 +0000 (10:40 +0200)
src/lib-ssl-iostream/ssl-settings.c

index c4356618e935332327932c20d05f4346ed374ca1..9a15c2b0a265ee22286ed4b6248efc6d98fd22e2 100644 (file)
@@ -15,6 +15,9 @@ static bool
 ssl_server_settings_check(void *_set, pool_t pool, const char **error_r);
 
 static const struct setting_define ssl_setting_defines[] = {
+       { .type = SET_FILTER_NAME, .key = "ssl_client", },
+       { .type = SET_FILTER_NAME, .key = "ssl_server", },
+
        DEF(FILE, ssl_client_ca_file),
        DEF(STR, ssl_client_ca_dir),
        DEF(FILE, ssl_client_cert_file),
@@ -169,7 +172,12 @@ int ssl_client_settings_get(struct event *event,
                            const struct ssl_settings **set_r,
                            const char **error_r)
 {
-       return settings_get(event, &ssl_setting_parser_info, 0, set_r, error_r);
+       event = event_create(event);
+       event_set_ptr(event, SETTINGS_EVENT_FILTER_NAME, "ssl_client");
+       int ret = settings_get(event, &ssl_setting_parser_info, 0,
+                              set_r, error_r);
+       event_unref(&event);
+       return ret;
 }
 
 int ssl_server_settings_get(struct event *event,
@@ -177,15 +185,18 @@ int ssl_server_settings_get(struct event *event,
                            const struct ssl_server_settings **server_set_r,
                            const char **error_r)
 {
-       if (settings_get(event, &ssl_setting_parser_info, 0,
-                        set_r, error_r) < 0)
-               return -1;
-       if (settings_get(event, &ssl_server_setting_parser_info, 0,
-                        server_set_r, error_r) < 0) {
-               settings_free(*set_r);
-               return -1;
+       event = event_create(event);
+       event_set_ptr(event, SETTINGS_EVENT_FILTER_NAME, "ssl_server");
+       int ret = settings_get(event, &ssl_setting_parser_info, 0,
+                              set_r, error_r);
+       if (ret == 0) {
+               ret = settings_get(event, &ssl_server_setting_parser_info, 0,
+                                  server_set_r, error_r);
+               if (ret < 0)
+                       settings_free(*set_r);
        }
-       return 0;
+       event_unref(&event);
+       return ret;
 }
 
 static struct ssl_iostream_settings *