Author: Steve Langasek <vorlon@debian.org>

Set the default value for client certificate checking with TLS/SSL in
the per-context options, not in the "global" options which are in fact
never used within slapd.

Partially addresses Debian bug #462588.

To be forwarded upstream.

Index: servers/slapd/main.c
===================================================================
--- servers/slapd/main.c	(revision 1074)
+++ servers/slapd/main.c	(working copy)
@@ -736,6 +736,13 @@
 		SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
 		goto destroy;
 	}
+	/* Library defaults to full certificate checking. This is correct when
+	 * a client is verifying a server because all servers should have a
+	 * valid cert. But few clients have valid certs, so we want our default
+	 * to be no checking. The config file can override this as usual.
+	 */
+	rc = LDAP_OPT_X_TLS_NEVER;
+	(void) ldap_pvt_tls_set_option( slap_tls_ld, LDAP_OPT_X_TLS_REQUIRE_CERT, &rc );
 #endif
 
 	rc = slap_init( serverMode, serverName );
Index: servers/slapd/init.c
===================================================================
--- servers/slapd/init.c	(revision 1074)
+++ servers/slapd/init.c	(working copy)
@@ -179,16 +179,6 @@
 		return 1;
 	}
 
-#ifdef HAVE_TLS
-	/* Library defaults to full certificate checking. This is correct when
-	 * a client is verifying a server because all servers should have a
-	 * valid cert. But few clients have valid certs, so we want our default
-	 * to be no checking. The config file can override this as usual.
-	 */
-	rc = 0;
-	(void) ldap_pvt_tls_set_option( NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &rc );
-#endif
-
 	if ( frontend_init() ) {
 		slap_debug |= LDAP_DEBUG_NONE;
 		Debug( LDAP_DEBUG_ANY,
