From 4dca841d51dc1f11d62d86a31d8545dbfdcf7798 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 3 Jul 2013 14:26:49 +0200 Subject: s3-libads: Use ldap_initialize() if available. Signed-off-by: Andreas Schneider Reviewed-by: Stefan Metzmacher --- source3/libads/ldap.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c index f0f9d4c63a..c59eda2b49 100644 --- a/source3/libads/ldap.c +++ b/source3/libads/ldap.c @@ -65,6 +65,8 @@ static void gotalarm_sig(int signum) int port, unsigned int to) { LDAP *ldp = NULL; + int ldap_err; + char *uri; DEBUG(10, ("Opening connection to LDAP server '%s:%d', timeout " "%u seconds\n", server, port, to)); @@ -109,13 +111,26 @@ static void gotalarm_sig(int signum) /* End setup timeout. */ } - ldp = ldap_open(server, port); + uri = talloc_asprintf(talloc_tos(), "ldap://%s:%u", server, port); + if (uri == NULL) { + return NULL; + } - if (ldp == NULL) { - DEBUG(2,("Could not open connection to LDAP server %s:%d: %s\n", - server, port, strerror(errno))); +#ifdef HAVE_LDAP_INITIALIZE + ldap_err = ldap_initialize(&ldp, uri); +#else + ldp = ldap_open(server, port); + if (ldp != NULL) { + ldap_err = LDAP_SUCCESS; + } else { + ldap_err = LDAP_OTHER; + } +#endif + if (ldap_err != LDAP_SUCCESS) { + DEBUG(2,("Could not initialize connection for LDAP server '%s': %s\n", + uri, ldap_err2string(ldap_err))); } else { - DEBUG(10, ("Connected to LDAP server '%s:%d'\n", server, port)); + DEBUG(10, ("Initialized connection for LDAP server '%s'\n", uri)); } if (to) { -- cgit