You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by mi...@apache.org on 2005/01/06 21:20:03 UTC

svn commit: r124431 - /apr/apr-util/branches/1.0.x/build/apu-conf.m4 /apr/apr-util/branches/1.0.x/include/apr_ldap.h.in /apr/apr-util/branches/1.0.x/include/apr_ldap.hnw /apr/apr-util/branches/1.0.x/include/apr_ldap.hw /apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c

Author: minfrin
Date: Thu Jan  6 12:20:02 2005
New Revision: 124431

URL: http://svn.apache.org/viewcvs?view=rev&rev=124431
Log:
Add the ability to detect the flavour of the LDAP toolkit within configure,
making the APR_LDAP_*_LDAPSDK macros work correctly.

Modified:
   apr/apr-util/branches/1.0.x/build/apu-conf.m4
   apr/apr-util/branches/1.0.x/include/apr_ldap.h.in
   apr/apr-util/branches/1.0.x/include/apr_ldap.hnw
   apr/apr-util/branches/1.0.x/include/apr_ldap.hw
   apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c

Modified: apr/apr-util/branches/1.0.x/build/apu-conf.m4
Url: http://svn.apache.org/viewcvs/apr/apr-util/branches/1.0.x/build/apu-conf.m4?view=diff&rev=124431&p1=apr/apr-util/branches/1.0.x/build/apu-conf.m4&r1=124430&p2=apr/apr-util/branches/1.0.x/build/apu-conf.m4&r2=124431
==============================================================================
--- apr/apr-util/branches/1.0.x/build/apu-conf.m4	(original)
+++ apr/apr-util/branches/1.0.x/build/apu-conf.m4	Thu Jan  6 12:20:02 2005
@@ -246,6 +246,12 @@
 apu_has_ldap_start_tls_s="0"
 apu_has_ldapssl_init="0"
 apu_has_ldap_sslinit="0"
+apu_has_ldap_openldap="0"
+apu_has_ldap_solaris="0"
+apu_has_ldap_novell="0"
+apu_has_ldap_microsoft="0"
+apu_has_ldap_netscape="0"
+apu_has_ldap_other="0"
 
 AC_ARG_WITH(ldap-include,[  --with-ldap-include=path  path to ldap include files with trailing slash])
 AC_ARG_WITH(ldap-lib,[  --with-ldap-lib=path    path to ldap lib file])
@@ -304,6 +310,46 @@
 
     AC_CHECK_HEADERS(ldap_ssl.h, ldap_ssl_h=["#include <ldap_ssl.h>"])
 
+    if test "$apr_cv_hdr_ldap_h" = "yes"; then
+      AC_CACHE_CHECK([for LDAP toolkit],
+                     [apr_cv_ldap_toolkit], [
+        if test "x$apr_cv_ldap_toolkit" = "x"; then
+          AC_EGREP_CPP([OpenLDAP], [$lber_h
+                       $ldap_h 
+                       LDAP_VENDOR_NAME], [apu_has_ldap_openldap="1"
+                                           apr_cv_ldap_toolkit="OpenLDAP"])
+        fi
+        if test "x$apr_cv_ldap_toolkit" = "x"; then
+          AC_EGREP_CPP([Sun Microsystems Inc.], [$lber_h
+                       $ldap_h
+                       LDAP_VENDOR_NAME], [apu_has_ldap_solaris="1"
+                                           apr_cv_ldap_toolkit="Solaris"])
+        fi
+        if test "x$apr_cv_ldap_toolkit" = "x"; then
+          AC_EGREP_CPP([Novell], [$lber_h
+                       $ldap_h
+                       LDAP_VENDOR_NAME], [apu_has_ldap_novell="1"
+                                           apr_cv_ldap_toolkit="Novell"])
+        fi
+        if test "x$apr_cv_ldap_toolkit" = "x"; then
+          AC_EGREP_CPP([Microsoft Corporation.], [$lber_h
+                       $ldap_h
+                       LDAP_VENDOR_NAME], [apu_has_ldap_microsoft="1"
+                                           apr_cv_ldap_toolkit="Microsoft"])
+        fi
+        if test "x$apr_cv_ldap_toolkit" = "x"; then
+          AC_EGREP_CPP([Netscape Communications Corp.], [$lber_h
+                       $ldap_h
+                       LDAP_VENDOR_NAME], [apu_has_ldap_netscape="1"
+                                           apr_cv_ldap_toolkit="Netscape"])
+        fi
+        if test "x$apr_cv_ldap_toolkit" = "x"; then
+          apu_has_ldap_other="1"
+          apr_cv_ldap_toolkit="unknown"
+        fi
+      ])
+    fi
+
     CPPFLAGS=$save_cppflags
     LDFLAGS=$save_ldflags
     LIBS=$save_libs
@@ -319,6 +365,12 @@
 AC_SUBST(apu_has_ldapssl_init)
 AC_SUBST(apu_has_ldap_sslinit)
 AC_SUBST(apu_has_ldap)
+AC_SUBST(apu_has_ldap_openldap)
+AC_SUBST(apu_has_ldap_solaris)
+AC_SUBST(apu_has_ldap_novell)
+AC_SUBST(apu_has_ldap_microsoft)
+AC_SUBST(apu_has_ldap_netscape)
+AC_SUBST(apu_has_ldap_other)
 
 ])
 

Modified: apr/apr-util/branches/1.0.x/include/apr_ldap.h.in
Url: http://svn.apache.org/viewcvs/apr/apr-util/branches/1.0.x/include/apr_ldap.h.in?view=diff&rev=124431&p1=apr/apr-util/branches/1.0.x/include/apr_ldap.h.in&r1=124430&p2=apr/apr-util/branches/1.0.x/include/apr_ldap.h.in&r2=124431
==============================================================================
--- apr/apr-util/branches/1.0.x/include/apr_ldap.h.in	(original)
+++ apr/apr-util/branches/1.0.x/include/apr_ldap.h.in	Thu Jan  6 12:20:02 2005
@@ -32,29 +32,19 @@
 /* this will be defined if LDAP support was compiled into apr-util */
 #define APR_HAS_LDAP		  @apu_has_ldap@
 
-
-/*
- * Handle the case when LDAP is disabled - switch everything off by default
- */
-#if !APR_HAS_LDAP
-
-/*
- * The following #defines are DEPRECATED and should not be used. They do
- * not work properly anyway.
- */
-#define APR_HAS_NETSCAPE_LDAPSDK    0
-#define APR_HAS_NOVELL_LDAPSDK      0
-#define APR_HAS_OPENLDAP_LDAPSDK    0
-#define APR_HAS_MICROSOFT_LDAPSDK   0
-#define APR_HAS_OTHER_LDAPSDK       0
-#define APR_HAS_LDAP_SSL            0
-#define APR_HAS_LDAP_URL_PARSE      0
+/* identify the LDAP toolkit used */
+#define APR_HAS_NETSCAPE_LDAPSDK  @apu_has_ldap_netscape@
+#define APR_HAS_SOLARIS_LDAPSDK   @apu_has_ldap_solaris@
+#define APR_HAS_NOVELL_LDAPSDK    @apu_has_ldap_novell@
+#define APR_HAS_OPENLDAP_LDAPSDK  @apu_has_ldap_openldap@
+#define APR_HAS_MICROSOFT_LDAPSDK @apu_has_ldap_microsoft@
+#define APR_HAS_OTHER_LDAPSDK     @apu_has_ldap_other@
 
 
 /*
  * Handle the case when LDAP is enabled
  */
-#else /* ldap support available */
+#if APR_HAS_LDAP
 
 /*
  * The following #defines are DEPRECATED and should not be used for
@@ -64,7 +54,6 @@
  * apr_ldap_url_parse*() functions have been rewritten specifically for
  * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero.
  */
-#define APR_HAS_OPENLDAP_LDAPSDK 1 
 #define APR_HAS_LDAP_SSL 1
 #define APR_HAS_LDAP_URL_PARSE      0
 
@@ -78,16 +67,6 @@
 #if APR_HAS_LDAP_SSL 
 @ldap_ssl_h@
 #endif
-
-
-/*
- * Vendor LDAP toolkits that we identify
- */
-#define APR_LDAP_VENDOR_NOVELL "Novell"
-#define APR_LDAP_VENDOR_NETSCAPE "Netscape Communications Corp."
-#define APR_LDAP_VENDOR_MICROSOFT "Microsoft Corporation."
-#define APR_LDAP_VENDOR_OPENLDAP "OpenLDAP"
-#define APR_LDAP_VENDOR_SUN "Sun Microsystems Inc."
 
 
 /*

Modified: apr/apr-util/branches/1.0.x/include/apr_ldap.hnw
Url: http://svn.apache.org/viewcvs/apr/apr-util/branches/1.0.x/include/apr_ldap.hnw?view=diff&rev=124431&p1=apr/apr-util/branches/1.0.x/include/apr_ldap.hnw&r1=124430&p2=apr/apr-util/branches/1.0.x/include/apr_ldap.hnw&r2=124431
==============================================================================
--- apr/apr-util/branches/1.0.x/include/apr_ldap.hnw	(original)
+++ apr/apr-util/branches/1.0.x/include/apr_ldap.hnw	Thu Jan  6 12:20:02 2005
@@ -30,31 +30,21 @@
  */
 
 /* this will be defined if LDAP support was compiled into apr-util */
-#define APR_HAS_LDAP		 1 
+#define APR_HAS_LDAP                1 
 
-
-/*
- * Handle the case when LDAP is disabled - switch everything off by default
- */
-#if !APR_HAS_LDAP
-
-/*
- * The following #defines are DEPRECATED and should not be used. They do
- * not work properly anyway.
- */
+/* identify the LDAP toolkit used */
 #define APR_HAS_NETSCAPE_LDAPSDK    0
-#define APR_HAS_NOVELL_LDAPSDK      0
+#define APR_HAS_SOLARIS_LDAPSDK     0 
+#define APR_HAS_NOVELL_LDAPSDK      1
 #define APR_HAS_OPENLDAP_LDAPSDK    0
 #define APR_HAS_MICROSOFT_LDAPSDK   0
 #define APR_HAS_OTHER_LDAPSDK       0
-#define APR_HAS_LDAP_SSL            0
-#define APR_HAS_LDAP_URL_PARSE      0
 
 
 /*
  * Handle the case when LDAP is enabled
  */
-#else /* ldap support available */
+#if APR_HAS_LDAP
 
 /*
  * The following #defines are DEPRECATED and should not be used for
@@ -64,7 +54,6 @@
  * apr_ldap_url_parse*() functions have been rewritten specifically for
  * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero.
  */
-#define APR_HAS_NOVELL_LDAPSDK      1 
 #define APR_HAS_LDAP_SSL            1
 #define APR_HAS_LDAP_URL_PARSE      0
 
@@ -78,16 +67,6 @@
 #if APR_HAS_LDAP_SSL 
 #include <ldap_ssl.h>
 #endif
-
-
-/*
- * Vendor LDAP toolkits that we identify
- */
-#define APR_LDAP_VENDOR_NOVELL "Novell"
-#define APR_LDAP_VENDOR_NETSCAPE "Netscape Communications Corp."
-#define APR_LDAP_VENDOR_MICROSOFT "Microsoft Corporation."
-#define APR_LDAP_VENDOR_OPENLDAP "OpenLDAP"
-#define APR_LDAP_VENDOR_SUN "Sun Microsystems Inc."
 
 
 /*

Modified: apr/apr-util/branches/1.0.x/include/apr_ldap.hw
Url: http://svn.apache.org/viewcvs/apr/apr-util/branches/1.0.x/include/apr_ldap.hw?view=diff&rev=124431&p1=apr/apr-util/branches/1.0.x/include/apr_ldap.hw&r1=124430&p2=apr/apr-util/branches/1.0.x/include/apr_ldap.hw&r2=124431
==============================================================================
--- apr/apr-util/branches/1.0.x/include/apr_ldap.hw	(original)
+++ apr/apr-util/branches/1.0.x/include/apr_ldap.hw	Thu Jan  6 12:20:02 2005
@@ -32,29 +32,19 @@
 /* this will be defined if LDAP support was compiled into apr-util */
 #define APR_HAS_LDAP		  1
 
-
-/*
- * Handle the case when LDAP is disabled - switch everything off by default
- */
-#if !APR_HAS_LDAP
-
-/*
- * The following #defines are DEPRECATED and should not be used. They do
- * not work properly anyway.
- */
+/* identify the LDAP toolkit used */
 #define APR_HAS_NETSCAPE_LDAPSDK    0
+#define APR_HAS_SOLARIS_LDAPSDK     0 
 #define APR_HAS_NOVELL_LDAPSDK      0
 #define APR_HAS_OPENLDAP_LDAPSDK    0
-#define APR_HAS_MICROSOFT_LDAPSDK   0
+#define APR_HAS_MICROSOFT_LDAPSDK   1
 #define APR_HAS_OTHER_LDAPSDK       0
-#define APR_HAS_LDAP_SSL            0
-#define APR_HAS_LDAP_URL_PARSE      0
 
 
 /*
  * Handle the case when LDAP is enabled
  */
-#else /* ldap support available */
+#if APR_HAS_LDAP
 
 /*
  * The following #defines are DEPRECATED and should not be used for
@@ -64,7 +54,6 @@
  * apr_ldap_url_parse*() functions have been rewritten specifically for
  * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero.
  */
-#define APR_HAS_MICROSOFT_LDAPSDK 1 
 #define APR_HAS_LDAP_SSL 1
 #define APR_HAS_LDAP_URL_PARSE 0
 
@@ -74,16 +63,6 @@
  */
 
 #include <winldap.h>
-
-
-/*
- * Vendor LDAP toolkits that we identify
- */
-#define APR_LDAP_VENDOR_NOVELL "Novell"
-#define APR_LDAP_VENDOR_NETSCAPE "Netscape Communications Corp."
-#define APR_LDAP_VENDOR_MICROSOFT "Microsoft Corporation."
-#define APR_LDAP_VENDOR_OPENLDAP "OpenLDAP"
-#define APR_LDAP_VENDOR_SUN "Sun Microsystems Inc."
 
 
 /*

Modified: apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c
Url: http://svn.apache.org/viewcvs/apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c?view=diff&rev=124431&p1=apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c&r1=124430&p2=apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c&r2=124431
==============================================================================
--- apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c	(original)
+++ apr/apr-util/branches/1.0.x/ldap/apr_ldap_init.c	Thu Jan  6 12:20:02 2005
@@ -60,28 +60,26 @@
 #if APR_HAS_LDAP_SSL /* compiled with ssl support */
 
         /* Novell needs special initialisation */
-        if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_NOVELL)) {
-
+#if APR_HAS_NOVELL_LDAPSDK
 #if APR_HAS_LDAPSSL_CLIENT_INIT
-            result->rc = ldapssl_client_init(NULL, NULL);
+        result->rc = ldapssl_client_init(NULL, NULL);
 
-            if (LDAP_SUCCESS == result->rc) {
-                return APR_SUCCESS;
-            }
-            else {
-                result->msg = ldap_err2string(result-> rc);
-                result->reason = apr_pstrdup (pool, "LDAP: Could not "
-                                                    "initialize SSL");
-                return APR_EGENERAL;
-            }
+        if (LDAP_SUCCESS == result->rc) {
+            return APR_SUCCESS;
+        }
+        else {
+            result->msg = ldap_err2string(result-> rc);
+            result->reason = apr_pstrdup (pool, "LDAP: Could not "
+                                                "initialize SSL");
+            return APR_EGENERAL;
+        }
 #else
-            result->reason = "LDAP: ldapssl_client_init() function not "
-                             "supported by this Novell SDK. SSL not "
-                             "initialised";
-            result->rc = -1;
+        result->reason = "LDAP: ldapssl_client_init() function not "
+                         "supported by this Novell SDK. SSL not "
+                         "initialised";
+        result->rc = -1;
+#endif
 #endif
-
-        }
 
 #endif
     }
@@ -116,133 +114,121 @@
 #if APR_HAS_LDAP_SSL /* compiled with ssl support */
 
         /* Netscape SDK */
-        if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_NETSCAPE)) {
-
+#if APR_HAS_NETSCAPE_LDAPSK
 #if APR_HAS_LDAP_SSL_CLIENT_INIT
-            /* Netscape sdk only supports a cert7.db file 
-             */
-            if (cert_file_type == APR_LDAP_CA_TYPE_CERT7_DB) {
-                result->rc = ldapssl_client_init(cert_auth_file, NULL);
-            }
-            else {
-                result->reason = "LDAP: Invalid certificate type: "
-                                 "CERT7_DB type required";
-                result->rc = -1;
-            }
-#else
-            result->reason = "LDAP: ldapssl_client_init() function not "
-                             "supported by this Netscape SDK. Certificate "
-                             "authority file not set";
+        /* Netscape sdk only supports a cert7.db file 
+         */
+        if (cert_file_type == APR_LDAP_CA_TYPE_CERT7_DB) {
+            result->rc = ldapssl_client_init(cert_auth_file, NULL);
+        }
+        else {
+            result->reason = "LDAP: Invalid certificate type: "
+                             "CERT7_DB type required";
             result->rc = -1;
-#endif
-
         }
-
+#else
+        result->reason = "LDAP: ldapssl_client_init() function not "
+                         "supported by this Netscape SDK. Certificate "
+                         "authority file not set";
+        result->rc = -1;
+#endif
+#endif
         /* Novell SDK */
-        else if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_NOVELL)) {
-
+#if APR_HAS_NOVELL_LDAPSDK
 #if APR_HAS_LDAPSSL_CLIENT_INIT && APR_HAS_LDAPSSL_ADD_TRUSTED_CERT && APR_HAS_LDAPSSL_CLIENT_DEINIT
-            /* Novell SDK supports DER or BASE64 files
-             */
-            if (cert_file_type == APR_LDAP_CA_TYPE_DER  ||
-                cert_file_type == APR_LDAP_CA_TYPE_BASE64 ) {
-
-                result->rc = ldapssl_client_init(NULL, NULL);
-                if (LDAP_SUCCESS == result->rc) {
-                    if (cert_file_type == APR_LDAP_CA_TYPE_BASE64) {
-                        result->rc = ldapssl_add_trusted_cert((void*)cert_auth_file, 
-                                                  LDAPSSL_CERT_FILETYPE_B64);
-                    }
-                    else {
-                        result->rc = ldapssl_add_trusted_cert((void*)cert_auth_file, 
-                                                  LDAPSSL_CERT_FILETYPE_DER);
-                    }
-
-                    if (LDAP_SUCCESS != result->rc) {
-                        ldapssl_client_deinit();
-                        result->reason = apr_psprintf(pool, 
-                                                      "LDAP: Invalid certificate "
-                                                      "or path: Could not add "
-                                                      "trusted cert %s", 
-                                                      cert_auth_file);
-                    }
+        /* Novell SDK supports DER or BASE64 files
+         */
+        if (cert_file_type == APR_LDAP_CA_TYPE_DER  ||
+            cert_file_type == APR_LDAP_CA_TYPE_BASE64 ) {
+
+            result->rc = ldapssl_client_init(NULL, NULL);
+            if (LDAP_SUCCESS == result->rc) {
+                if (cert_file_type == APR_LDAP_CA_TYPE_BASE64) {
+                    result->rc = ldapssl_add_trusted_cert((void*)cert_auth_file, 
+                                              LDAPSSL_CERT_FILETYPE_B64);
+                }
+                else {
+                    result->rc = ldapssl_add_trusted_cert((void*)cert_auth_file, 
+                                              LDAPSSL_CERT_FILETYPE_DER);
                 }
-            }
-            else {
-                result->reason = "LDAP: Invalid certificate type: "
-                                 "DER or BASE64 type required";
-                result->rc = -1;
-            }
 
-#else
-            result->reason = "LDAP: ldapssl_client_init(), "
-                             "ldapssl_add_trusted_cert() or "
-                             "ldapssl_client_deinit() functions not supported "
-                             "by this Novell SDK. Certificate authority file "
-                             "not set";
+                if (LDAP_SUCCESS != result->rc) {
+                    ldapssl_client_deinit();
+                    result->reason = apr_psprintf(pool, 
+                                                  "LDAP: Invalid certificate "
+                                                  "or path: Could not add "
+                                                  "trusted cert %s", 
+                                                  cert_auth_file);
+                }
+            }
+        }
+        else {
+            result->reason = "LDAP: Invalid certificate type: "
+                             "DER or BASE64 type required";
             result->rc = -1;
-#endif
         }
+#else
+        result->reason = "LDAP: ldapssl_client_init(), "
+                         "ldapssl_add_trusted_cert() or "
+                         "ldapssl_client_deinit() functions not supported "
+                         "by this Novell SDK. Certificate authority file "
+                         "not set";
+        result->rc = -1;
+#endif
+#endif
 
         /* openldap SDK */
-        else if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_OPENLDAP)) {
+#if APR_HAS_OPENLDAP_LDAPSDK
 #ifdef LDAP_OPT_X_TLS_CACERTFILE
-
-            /* OpenLDAP SDK supports BASE64 files
-             */
-            if (cert_file_type == APR_LDAP_CA_TYPE_BASE64) {
-                result->rc = ldap_set_option(NULL,
-                                             LDAP_OPT_X_TLS_CACERTFILE,
-                                             cert_auth_file);
-            }
-            else {
-                result->reason = "LDAP: Invalid certificate type: "
-                                 "BASE64 type required";
-                result->rc = -1;
-            }
-
-#else
-            result->reason = "LDAP: LDAP_OPT_X_TLS_CACERTFILE not "
-                             "defined by this OpenLDAP SDK. Certificate "
-                             "authority file not set";
+        /* OpenLDAP SDK supports BASE64 files
+         */
+        if (cert_file_type == APR_LDAP_CA_TYPE_BASE64) {
+            result->rc = ldap_set_option(NULL,
+                                         LDAP_OPT_X_TLS_CACERTFILE,
+                                         cert_auth_file);
+        }
+        else {
+            result->reason = "LDAP: Invalid certificate type: "
+                             "BASE64 type required";
             result->rc = -1;
-#endif
         }
+#else
+        result->reason = "LDAP: LDAP_OPT_X_TLS_CACERTFILE not "
+                         "defined by this OpenLDAP SDK. Certificate "
+                         "authority file not set";
+        result->rc = -1;
+#endif
+#endif
 
         /* microsoft SDK */
-        else if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_MICROSOFT)) {
-
-            /* Microsoft SDK use the registry certificate store - always
-             * assume support is always available
-             */
-            result->rc = LDAP_SUCCESS;
-
-        }
+#if APR_HAS_MICROSOFT_LDAPSDK
+        /* Microsoft SDK use the registry certificate store - always
+         * assume support is always available
+         */
+        result->rc = LDAP_SUCCESS;
+#endif
 
         /* Sun SDK */
-        else if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_SUN)) {
-            result->reason = "LDAP: Attempt to set certificate store failed. "
-                             "APR does not yet know how to set a certificate "
-                             "store on the Sun toolkit";
-            result->rc = -1;
-        }
+#if APR_HAS_SOLARIS_LDAPSDK
+        result->reason = "LDAP: Attempt to set certificate store failed. "
+                         "APR does not yet know how to set a certificate "
+                         "store on the Sun toolkit";
+        result->rc = -1;
+#endif
 
         /* SDK not recognised */
-        else {
-
-            /* unknown toolkit type, assume no support available */
-            result->reason = "LDAP: Attempt to set certificate store failed. "
-                             "Toolkit type not recognised by APR as supporting "
-                             "SSL";
-            result->rc = -1;
-        }
+#if APR_HAS_OTHER_LDAPSDK
+        /* unknown toolkit type, assume no support available */
+        result->reason = "LDAP: Attempt to set certificate store failed. "
+                         "Toolkit type not recognised by APR as supporting "
+                         "SSL";
+        result->rc = -1;
+#endif
 
 #else  /* not compiled with SSL Support */
-
         result->reason = "LDAP: Attempt to set certificate store failed. "
                          "Not built with SSL support";
         result->rc = -1;
-
 #endif /* APR_HAS_LDAP_SSL */
 
         if (result->rc != -1) {
@@ -317,62 +303,62 @@
 #if APR_HAS_LDAP_SSL
 
         /* novell / netscape toolkit */
-        if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_NOVELL) ||
-            !strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_NETSCAPE)) {
+#if APR_HAS_NOVELL_LDAPSDK || APR_HAS_NETSCAPE_LDAPSDK
 #if APR_HAS_LDAPSSL_INIT
-            *ldap = ldapssl_init(hostname, portno, 1);
+        *ldap = ldapssl_init(hostname, portno, 1);
 #else
-            result->reason = "LDAP: SSL not yet supported by APR on "
-                             "this version of the Novell/Netscape toolkit";
-            return APR_ENOTIMPL;
+        result->reason = "LDAP: SSL not yet supported by APR on "
+                         "this version of the Novell/Netscape toolkit";
+        return APR_ENOTIMPL;
+#endif
 #endif
-        }
 
         /* openldap toolkit */
-        else if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_OPENLDAP)) {
+#if APR_HAS_OPENLDAP_LDAPSDK
 #ifdef LDAP_OPT_X_TLS
-            *ldap = ldap_init(hostname, portno);
-            if (NULL != *ldap) {
-                int SSLmode = LDAP_OPT_X_TLS_HARD;
-                result->rc = ldap_set_option(*ldap, LDAP_OPT_X_TLS, &SSLmode);
-                if (LDAP_SUCCESS != result->rc) {
-                    ldap_unbind_s(*ldap);
-                    result->reason = "LDAP: ldap_set_option - "
-                                     "LDAP_OPT_X_TLS_HARD failed";
-                    result->msg = ldap_err2string(result->rc);
-                    *ldap = NULL;
-                    return APR_EGENERAL;
-                }
+        *ldap = ldap_init(hostname, portno);
+        if (NULL != *ldap) {
+            int SSLmode = LDAP_OPT_X_TLS_HARD;
+            result->rc = ldap_set_option(*ldap, LDAP_OPT_X_TLS, &SSLmode);
+            if (LDAP_SUCCESS != result->rc) {
+                ldap_unbind_s(*ldap);
+                result->reason = "LDAP: ldap_set_option - "
+                                 "LDAP_OPT_X_TLS_HARD failed";
+                result->msg = ldap_err2string(result->rc);
+                *ldap = NULL;
+                return APR_EGENERAL;
             }
+        }
 #else
-            result->reason = "LDAP: SSL not yet supported by APR on this "
-                             "version of the OpenLDAP toolkit";
-            return APR_ENOTIMPL;
+        result->reason = "LDAP: SSL not yet supported by APR on this "
+                         "version of the OpenLDAP toolkit";
+        return APR_ENOTIMPL;
+#endif
 #endif
-        }
 
         /* microsoft toolkit */
-        else if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_MICROSOFT)) {
+#if APR_HAS_MICROSOFT_LDAPSDK
 #if APR_HAS_LDAP_SSLINIT
-            *ldap = ldap_sslinit((char *)hostname, portno, 1);
+        *ldap = ldap_sslinit((char *)hostname, portno, 1);
 #else
-            result->reason = "LDAP: SSL not yet supported by APR on "
-                             "this version of the Microsoft toolkit";
-            return APR_ENOTIMPL;
+        result->reason = "LDAP: SSL not yet supported by APR on "
+                         "this version of the Microsoft toolkit";
+        return APR_ENOTIMPL;
+#endif
 #endif
-        }
 
         /* sun toolkit */
-        else if (!strcmp(LDAP_VENDOR_NAME, APR_LDAP_VENDOR_SUN)) {
-            result->reason = "LDAP: SSL not yet supported by APR on "
-                             "this version of the Sun toolkit";
-            return APR_ENOTIMPL;
-        }
+#if APR_HAS_SOLARIS_LDAPSDK
+        result->reason = "LDAP: SSL not yet supported by APR on "
+                         "this version of the Sun toolkit";
+        return APR_ENOTIMPL;
+#endif
 
         /* unknown toolkit - return not implemented */
-        else {
-            return APR_ENOTIMPL;
-        }
+#if APR_HAS_OTHER_LDAPSDK
+        return APR_ENOTIMPL;
+#endif
+
 #endif /* APR_HAS_LDAP_SSL */
     }