return rc;
}
}
+ /* append global access controls */
+ acl_append( &be->be_acl, frontendDB->be_acl, -1 );
return backend_startup_one( be );
}
Backend *be, *b2 = NULL;
LDAP_STAILQ_FOREACH( be, &backendDB, be_next ) {
- if ( be->be_nsuffix == NULL ) {
+ if ( be->be_nsuffix == NULL || SLAP_DBHIDDEN( be )) {
continue;
}
int
be_shadow_update( Operation *op )
{
- return ( SLAP_SYNC_SHADOW( op->o_bd ) ||
+ /* This assumes that all internal ops (connid == -1) on a syncrepl
+ * database are syncrepl operations.
+ */
+ return (( SLAP_SYNC_SHADOW( op->o_bd ) && op->o_connid == -1 ) ||
( SLAP_SHADOW( op->o_bd ) && be_isupdate_dn( op->o_bd, &op->o_ndn ) ) );
}
}
}
- /* temporarily removed */
-#if 0
+#if 0 /* temporarily removed */
/* check should be generalized */
- if( get_manageDIT(op) && !be_isroot(op)) {
+ if( get_relax(op) && !be_isroot(op)) {
rs->sr_text = "requires manager authorization";
rs->sr_err = LDAP_UNWILLING_TO_PERFORM;
}
be_orig = op->o_bd;
op->o_bd = frontendDB;
-#ifdef SLAP_OVERLAY_ACCESS
rc = frontendDB->be_group( op, target, gr_ndn,
op_ndn, group_oc, group_at );
-#else /* ! SLAP_OVERLAY_ACCESS */
- rc = fe_acl_group( op, target, gr_ndn,
- op_ndn, group_oc, group_at );
-#endif /* ! SLAP_OVERLAY_ACCESS */
op->o_bd = be_orig;
return rc;
be_orig = op->o_bd;
op->o_bd = frontendDB;
-#ifdef SLAP_OVERLAY_ACCESS
rc = frontendDB->be_attribute( op, target, edn,
entry_at, vals, access );
-#else /* !SLAP_OVERLAY_ACCESS */
- rc = fe_acl_attribute( op, target, edn,
- entry_at, vals, access );
-#endif /* !SLAP_OVERLAY_ACCESS */
op->o_bd = be_orig;
return rc;