#include "lib.h"
#include "ldap-connection-pool.h"
#include "ldap-private.h"
+#include "settings.h"
/* Max number of ldap-connections that can be created. For now this is
unlimited since we're assuming our callers aren't calling us with many
return 0;
}
+int ldap_client_init_auto(struct event *event, struct ldap_client **client_r,
+ const char **error_r)
+{
+ const struct ldap_client_settings *set;
+ struct ldap_client *client;
+
+ if (ldap_client_settings_get(event, &set, error_r) < 0)
+ return -1;
+
+ if (ldap_conn_pool == NULL)
+ ldap_conn_pool = ldap_connection_pool_init(LDAP_CONN_POOL_MAX_CONNECTIONS);
+
+ client = i_new(struct ldap_client, 1);
+ client->event = event_create(event);
+ int ret = ldap_connection_pool_get(ldap_conn_pool, client, set,
+ &client->list, error_r);
+ settings_free(set);
+ if (ret < 0) {
+ i_free(client);
+ return -1;
+ }
+ *client_r = client;
+ return 0;
+}
+
void ldap_client_deinit(struct ldap_client **_client)
{
struct ldap_client *client = *_client;
failed with the given settings. */
int ldap_client_init(const struct ldap_client_settings *set,
struct ldap_client **client_r, const char **error_r);
+int ldap_client_init_auto(struct event *event, struct ldap_client **client_r,
+ const char **error_r);
void ldap_client_deinit(struct ldap_client **client);
void ldap_client_switch_ioloop(struct ldap_client *client);