X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Fdelete.c;h=40a87c07f3bd67e051c54c9d1c1290d30e036849;hb=52165180f7713b5fdebef933a9dca8842daa2e2a;hp=6762093c4ace96e27fa5dfb3184dfe79fa229f0d;hpb=b70abdcbce1544c95130102c7c01c7f1c1740ecd;p=openldap diff --git a/servers/slapd/delete.c b/servers/slapd/delete.c index 6762093c4a..40a87c07f3 100644 --- a/servers/slapd/delete.c +++ b/servers/slapd/delete.c @@ -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];