]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-ldap: ldap_client_settings - remove ssl_set
authorMarco Bettini <marco.bettini@open-xchange.com>
Mon, 14 Oct 2024 08:45:28 +0000 (08:45 +0000)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:01 +0000 (10:40 +0200)
src/lib-ldap/ldap-client.c
src/lib-ldap/ldap-settings.c
src/lib-ldap/ldap-settings.h

index 619eaf3996cea977698bcde16fdf2c64eb5ffc55..537fd716e4797383de669cd7d51679682cd02fa5 100644 (file)
@@ -21,9 +21,10 @@ int ldap_client_init_auto(struct event *event, struct ldap_client **client_r,
                          const char **error_r)
 {
        const struct ldap_client_settings *set;
+       const struct ssl_settings *ssl_set;
        struct ldap_client *client;
 
-       if (ldap_client_settings_get(event, &set, error_r) < 0)
+       if (ldap_client_settings_get(event, &set, &ssl_set, error_r) < 0)
                return -1;
 
        if (ldap_conn_pool == NULL)
@@ -31,9 +32,10 @@ int ldap_client_init_auto(struct event *event, struct ldap_client **client_r,
 
        client = i_new(struct ldap_client, 1);
        client->event = event_create(event);
-       int ret = ldap_connection_pool_get(ldap_conn_pool, client, set, set->ssl_set,
+       int ret = ldap_connection_pool_get(ldap_conn_pool, client, set, ssl_set,
                                           &client->list, error_r);
        settings_free(set);
+       settings_free(ssl_set);
        if (ret < 0) {
                i_free(client);
                return -1;
index 6aefe48e92c8ea578f3c229f9660c236986b28c0..7906b51172b3fc9fa5351af1386958d115b747c7 100644 (file)
@@ -67,32 +67,23 @@ 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 struct ssl_settings **ssl_set_r,
                             const char **error_r)
 {
        struct ldap_client_settings *set = NULL;
+       const struct ssl_settings *ssl_set = NULL;
        if (settings_get(event, &ldap_client_setting_parser_info, 0, &set, error_r) < 0 ||
+           settings_get(event, &ssl_setting_parser_info, 0, &ssl_set, error_r) < 0 ||
            ldap_client_settings_postcheck(set, error_r) < 0) {
                settings_free(set);
+               settings_free(ssl_set);
                return -1;
        }
 
-       if (settings_get(event, &ssl_setting_parser_info, 0, &set->ssl_set, error_r) < 0) {
-               settings_free(set);
-               return -1;
-       }
-
-       bind_pool(set->pool, set->ssl_set->pool);
-
        *set_r = set;
+       *ssl_set_r = ssl_set;
        *error_r = NULL;
        return 0;
 }
index 9725bfe0c98db93d7ac0e216ddb86cc01b978467..9f21122535a6e202adce6eb202d0470ce9a453bf 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef LDAP_SETTINGS_H
 #define LDAP_SETTINGS_H
 
+struct ssl_settings;
+
 struct ldap_client_settings {
        pool_t pool;
 
@@ -13,15 +15,13 @@ struct ldap_client_settings {
        unsigned int debug_level;
        bool require_ssl;
        bool starttls;
-
-       struct event *event_parent;
-       const struct ssl_settings *ssl_set;
 };
 
 extern const struct setting_parser_info ldap_client_setting_parser_info;
 
 int ldap_client_settings_get(struct event *event,
                             const struct ldap_client_settings **set_r,
+                            const struct ssl_settings **ssl_set_r,
                             const char **error_r);
 
 #endif