s3-libads: Use ldap_initialize() if available.
authorAndreas Schneider <asn@samba.org>
Wed, 3 Jul 2013 12:26:49 +0000 (14:26 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 17 Apr 2014 12:56:06 +0000 (14:56 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/libads/ldap.c

index f0f9d4c63a16a3010d0f149e7a2a07a77e99a288..c59eda2b499980fb32d3218e1bd75a724e7fa912 100644 (file)
@@ -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) {