File slapd-privdb-config-its5736.dif of Package openldap2-client

Index: servers/slapd/overlays/translucent.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/overlays/translucent.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- servers/slapd/overlays/translucent.c	6 Oct 2008 23:59:52 -0000	1.54
+++ servers/slapd/overlays/translucent.c	12 Oct 2008 18:20:47 -0000	1.55
@@ -95,14 +95,6 @@
 	{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
 };
 
-static ConfigTable transdummy[] = {
-	{ "", "", 0, 0, 0, ARG_IGNORED,
-		NULL, "( OLcfgGlAt:13 NAME 'olcDatabase' "
-			"DESC 'The backend type for a database instance' "
-			"SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
-	{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
-};
-
 static ConfigOCs translucentocs[] = {
 	{ "( OLcfgOvOc:14.1 "
 	  "NAME 'olcTranslucentConfig' "
@@ -115,7 +107,7 @@
 	{ "( OLcfgOvOc:14.2 "
 	  "NAME 'olcTranslucentDatabase' "
 	  "DESC 'Translucent target database configuration' "
-	  "AUXILIARY )", Cft_Misc, transdummy, translucent_ldadd },
+	  "AUXILIARY )", Cft_Misc, olcDatabaseDummy, translucent_ldadd },
 	{ NULL, 0, NULL }
 };
 /* for translucent_init() */
Index: servers/slapd/overlays/pcache.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/overlays/pcache.c,v
retrieving revision 1.153
retrieving revision 1.154
diff -u -r1.153 -r1.154
--- servers/slapd/overlays/pcache.c	4 Sep 2008 05:43:19 -0000	1.153
+++ servers/slapd/overlays/pcache.c	12 Oct 2008 18:20:47 -0000	1.154
@@ -2655,15 +2655,6 @@
 	{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
 };
 
-/* Need to no-op this keyword for dynamic config */
-static ConfigTable pcdummy[] = {
-	{ "", "", 0, 0, 0, ARG_IGNORED,
-		NULL, "( OLcfgGlAt:13 NAME 'olcDatabase' "
-			"DESC 'The backend type for a database instance' "
-			"SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
-	{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
-};
-
 static ConfigOCs pcocs[] = {
 	{ "( OLcfgOvOc:2.1 "
 		"NAME 'olcPcacheConfig' "
@@ -2675,7 +2666,7 @@
 	{ "( OLcfgOvOc:2.2 "
 		"NAME 'olcPcacheDatabase' "
 		"DESC 'Cache database configuration' "
-		"AUXILIARY )", Cft_Misc, pcdummy, pc_ldadd },
+		"AUXILIARY )", Cft_Misc, olcDatabaseDummy, pc_ldadd },
 	{ NULL, 0, NULL }
 };
 
@@ -3995,11 +3986,6 @@
 	code = config_register_schema( pccfg, pcocs );
 	if ( code ) return code;
 
-	{
-		const char *text;
-		code = slap_str2ad( "olcDatabase", &pcdummy[0].ad, &text );
-		if ( code ) return code;
-	}
 	return overlay_register( &pcache );
 }
 
Index: servers/slapd/back-monitor/database.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-monitor/database.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -r1.97 -r1.98
--- servers/slapd/back-monitor/database.c	26 May 2008 18:53:16 -0000	1.97
+++ servers/slapd/back-monitor/database.c	12 Oct 2008 18:20:46 -0000	1.98
@@ -160,12 +160,12 @@
 				"monitor_subsys_database_init: "
 				"missing suffix for %s\n",
 				rdnval, 0, 0 );
-			return -1;
-		}
-		attr_merge( e, slap_schema.si_ad_namingContexts,
+		} else {
+			attr_merge( e, slap_schema.si_ad_namingContexts,
 				be->be_suffix, be->be_nsuffix );
-		attr_merge( e_database, slap_schema.si_ad_namingContexts,
+			attr_merge( e_database, slap_schema.si_ad_namingContexts,
 				be->be_suffix, be->be_nsuffix );
+		}
 	}
 
 	(void)init_readOnly( mi, e, be->be_restrictops );
Index: servers/slapd/back-ldap/chain.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-ldap/chain.c,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- servers/slapd/back-ldap/chain.c	7 Jan 2008 23:20:11 -0000	1.69
+++ servers/slapd/back-ldap/chain.c	12 Oct 2008 18:20:46 -0000	1.70
@@ -63,6 +63,7 @@
 	LDAP_CH_RES,
 	LDAP_CH_ERR
 } ldap_chain_status_t;
+
 static BackendInfo	*lback;
 
 typedef struct ldap_chain_t {
@@ -1096,7 +1097,7 @@
 		"NAME 'olcChainDatabase' "
 		"DESC 'Chain remote server configuration' "
 		"AUXILIARY )",
-		Cft_Misc, chaincfg, chain_ldadd },
+		Cft_Misc, olcDatabaseDummy, chain_ldadd },
 	{ NULL, 0, NULL }
 };
 
@@ -1187,6 +1188,8 @@
 		}
 	}
 
+	ca->ca_private = on;
+
 done:;
 	if ( rc != LDAP_SUCCESS ) {
 		(void)ldap_chain_db_destroy_one( ca->be, NULL );
@@ -1510,17 +1513,11 @@
 	ldap_chain_t	*lc = NULL;
 
 	if ( lback == NULL ) {
-		static BackendInfo	lback2;
-
 		lback = backend_info( "ldap" );
 
 		if ( lback == NULL ) {
 			return 1;
 		}
-
-		lback2 = *lback;
-		lback2.bi_type = ldapchain.on_bi.bi_type;
-		lback = &lback2;
 	}
 
 	lc = ch_malloc( sizeof( ldap_chain_t ) );
@@ -2062,7 +2059,8 @@
 int
 chain_initialize( void )
 {
-	int	rc;
+	int rc;
+	const char *text;
 
 	/* Make sure we don't exceed the bits reserved for userland */
 	config_check_userland( CH_LAST );
Index: servers/slapd/config.h
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/config.h,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- servers/slapd/config.h	18 Feb 2008 22:11:12 -0000	1.50
+++ servers/slapd/config.h	12 Oct 2008 18:20:46 -0000	1.51
@@ -201,6 +201,8 @@
 extern slap_verbmasks *slap_ldap_response_code;
 extern int slap_ldap_response_code_register( struct berval *bv, int err );
 
+extern ConfigTable olcDatabaseDummy[];
+
 LDAP_END_DECL
 
 #endif /* CONFIG_H */
Index: servers/slapd/bconfig.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/bconfig.c,v
retrieving revision 1.348
retrieving revision 1.350
diff -u -r1.348 -r1.350
--- servers/slapd/bconfig.c	29 Sep 2008 20:08:29 -0000	1.348
+++ servers/slapd/bconfig.c	12 Oct 2008 18:20:46 -0000	1.350
@@ -696,6 +696,15 @@
 		NULL, NULL, NULL, NULL }
 };
 
+/* Need to no-op this keyword for dynamic config */
+ConfigTable olcDatabaseDummy[] = {
+	{ "", "", 0, 0, 0, ARG_IGNORED,
+		NULL, "( OLcfgGlAt:13 NAME 'olcDatabase' "
+			"DESC 'The backend type for a database instance' "
+			"SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
+	{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
+};
+
 /* Routines to check if a child can be added to this type */
 static ConfigLDAPadd cfAddSchema, cfAddInclude, cfAddDatabase,
 	cfAddBackend, cfAddModule, cfAddOverlay;
@@ -3253,7 +3262,7 @@
 	ConfigArgs *ca;
 	Entry *frontend;
 	Entry *config;
-	int	got_frontend;
+	int got_frontend;
 	int got_config;
 } setup_cookie;
 
@@ -3262,15 +3271,18 @@
 {
 	if ( rs->sr_type == REP_SEARCH ) {
 		setup_cookie *sc = op->o_callback->sc_private;
+		struct berval pdn;
 
 		sc->cfb->cb_got_ldif = 1;
 		/* Does the frontend exist? */
 		if ( !sc->got_frontend ) {
 			if ( !strncmp( rs->sr_entry->e_nname.bv_val,
-				"olcDatabase", STRLENOF( "olcDatabase" ))) {
+				"olcDatabase", STRLENOF( "olcDatabase" )))
+			{
 				if ( strncmp( rs->sr_entry->e_nname.bv_val +
 					STRLENOF( "olcDatabase" ), "={-1}frontend",
-					STRLENOF( "={-1}frontend" ))) {
+					STRLENOF( "={-1}frontend" )))
+				{
 					struct berval rdn;
 					int i = op->o_noop;
 					sc->ca->be = frontendDB;
@@ -3293,13 +3305,19 @@
 				}
 			}
 		}
+
+		dnParent( &rs->sr_entry->e_nname, &pdn );
+
 		/* Does the configDB exist? */
 		if ( sc->got_frontend && !sc->got_config &&
 			!strncmp( rs->sr_entry->e_nname.bv_val,
-			"olcDatabase", STRLENOF( "olcDatabase" ))) {
+			"olcDatabase", STRLENOF( "olcDatabase" )) &&
+			dn_match( &config_rdn, &pdn ) )
+		{
 			if ( strncmp( rs->sr_entry->e_nname.bv_val +
 				STRLENOF( "olcDatabase" ), "={0}config",
-				STRLENOF( "={0}config" ))) {
+				STRLENOF( "={0}config" )))
+			{
 				struct berval rdn;
 				int i = op->o_noop;
 				sc->ca->be = LDAP_STAILQ_FIRST( &backendDB );
@@ -6466,6 +6484,9 @@
 	i = config_register_schema( ct, cf_ocs );
 	if ( i ) return i;
 
+	i = slap_str2ad( "olcDatabase", &olcDatabaseDummy[0].ad, &text );
+	if ( i ) return i;
+
 	/* setup olcRootPW to be base64-encoded when written in LDIF form;
 	 * basically, we don't care if it fails */
 	i = slap_str2ad( "olcRootPW", &ad, &text );
openSUSE Build Service is sponsored by