]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/backend.c
Merge in latest changes from HEAD
[openldap] / servers / slapd / backend.c
index f0adee39b08cd7304cae2768466c12e85074e11c..7458a2b910be7914833aa963d4579ea08840209c 100644 (file)
@@ -336,6 +336,23 @@ int backend_startup(Backend *be)
 
        /* open each backend database */
        for( i = 0; i < nBackendDB; i++ ) {
+               if ( backendDB[i].be_update_ndn.bv_val && (
+                       !backendDB[i].be_update_refs &&
+                       !backendDB[i].syncinfo &&
+                       !default_referral ) ) {
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACKEND, CRIT, 
+                               "backend_startup: slave \"%s\" updateref missing\n",
+                               backendDB[i].be_suffix[0].bv_val, 0, 0 );
+                               
+#else
+                       Debug( LDAP_DEBUG_ANY,
+                               "backend_startup: slave \"%s\" updateref missing\n",
+                               backendDB[i].be_suffix[0].bv_val, 0, 0 );
+#endif
+                       return -1;
+               }
+
                /* append global access controls */
                acl_append( &backendDB[i].be_acl, global_acl );
 
@@ -607,7 +624,8 @@ select_backend(
                                if( be == NULL ) {
                                        be = &backends[i];
 
-                                       if( manageDSAit && len == dnlen ) {
+                                       if( manageDSAit && len == dnlen &&
+                                               !SLAP_GLUE_SUBORDINATE( be ) ) {
                                                continue;
                                        }
                                } else {
@@ -1177,6 +1195,7 @@ backend_group(
 
        if ( target && dn_match( &target->e_nname, gr_ndn ) ) {
                e = target;
+               rc = 0;
        } else {
                rc = be_entry_get_rw(op, gr_ndn, group_oc, group_at, 0, &e );
        }