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)
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;
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;
}
#ifndef LDAP_SETTINGS_H
#define LDAP_SETTINGS_H
+struct ssl_settings;
+
struct ldap_client_settings {
pool_t pool;
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