]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/delete.c
ITS#3796 fix IDL cache lock setup/teardown
[openldap] / servers / slapd / delete.c
index 6762093c4ace96e27fa5dfb3184dfe79fa229f0d..40a87c07f3bd67e051c54c9d1c1290d30e036849 100644 (file)
@@ -107,6 +107,7 @@ fe_op_delete( Operation *op, SlapReply *rs )
 {
        struct berval   pdn = BER_BVNULL;
        int             manageDSAit;
+       BackendDB *op_be;
        
        manageDSAit = get_manageDSAit( op );
 
@@ -138,6 +139,12 @@ fe_op_delete( Operation *op, SlapReply *rs )
                goto cleanup;
        }
 
+       /* If we've got a glued backend, check the real backend */
+       op_be = op->o_bd;
+       if ( SLAP_GLUE_INSTANCE( op->o_bd )) {
+               op->o_bd = select_backend( &op->o_req_ndn, manageDSAit, 0 );
+       }
+
        /* check restrictions */
        if( backend_check_restrictions( op, rs, NULL ) != LDAP_SUCCESS ) {
                send_ldap_result( op, rs );
@@ -196,6 +203,8 @@ fe_op_delete( Operation *op, SlapReply *rs )
                        int             org_managedsait;
                        slap_callback   cb = { NULL, slap_replog_cb, NULL, NULL };
 
+                       op->o_bd = op_be;
+
                        if ( !repl_user ) {
                                struct berval csn = BER_BVNULL;
                                char csnbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];