summaryrefslogtreecommitdiff
path: root/source3/libads/ldap.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2013-07-03 14:26:49 +0200
committerStefan Metzmacher <metze@samba.org>2014-04-17 14:56:06 +0200
commit4dca841d51dc1f11d62d86a31d8545dbfdcf7798 (patch)
treeaddb61216cd7160226af13a59164987367b40327 /source3/libads/ldap.c
parent2522bb80902d2e7677a25a85fa597022f20f1147 (diff)
downloadsamba-4dca841d51dc1f11d62d86a31d8545dbfdcf7798.tar.gz
s3-libads: Use ldap_initialize() if available.
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3/libads/ldap.c')
-rw-r--r--source3/libads/ldap.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
index f0f9d4c63a1..c59eda2b499 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) {