From: Marco Bettini Date: Fri, 20 Sep 2024 16:55:29 +0000 (+0000) Subject: lib-ldap: ldap-settings - Read ssl settings from ssl_setting_parser_info X-Git-Tag: 2.4.0~140 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12a44891e6c17f14e9b830c7c38f4f84ba617992;p=thirdparty%2Fdovecot%2Fcore.git lib-ldap: ldap-settings - Read ssl settings from ssl_setting_parser_info --- diff --git a/src/lib-ldap/ldap-settings.c b/src/lib-ldap/ldap-settings.c index f02126fe28..2618c09ee4 100644 --- a/src/lib-ldap/ldap-settings.c +++ b/src/lib-ldap/ldap-settings.c @@ -4,6 +4,8 @@ #include "str.h" #include "settings.h" #include "ldap-settings.h" +#include "ssl-settings.h" +#include "iostream-ssl.h" #undef DEF #undef DEFN @@ -65,6 +67,13 @@ ldap_client_settings_postcheck(struct ldap_client_settings *set, const char **er return 0; } +static void bind_pool(pool_t to, pool_t from) +{ + pool_add_external_ref(to, from); + pool_t tmp = from; + pool_unref(&tmp); +} + int ldap_client_settings_get(struct event *event, const struct ldap_client_settings **set_r, const char **error_r) @@ -76,6 +85,15 @@ int ldap_client_settings_get(struct event *event, return -1; } + if (settings_get(event, &ssl_setting_parser_info, 0, &set->ssl_set, error_r) < 0) { + settings_free(set); + return -1; + } + + ssl_client_settings_to_iostream_set(set->ssl_set, &set->ssl_ioset); + bind_pool(set->pool, set->ssl_set->pool); + bind_pool(set->pool, set->ssl_ioset->pool); + *set_r = set; *error_r = NULL; return 0; diff --git a/src/lib-ldap/ldap-settings.h b/src/lib-ldap/ldap-settings.h index 502ef769e8..d4d66915d1 100644 --- a/src/lib-ldap/ldap-settings.h +++ b/src/lib-ldap/ldap-settings.h @@ -15,6 +15,7 @@ struct ldap_client_settings { bool starttls; struct event *event_parent; + const struct ssl_settings *ssl_set; const struct ssl_iostream_settings *ssl_ioset; };