X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fdelete.c;h=e31c51bbdb79b7b263f7cd044a0207a34080c171;hb=3cdba151ad18dba10786fde4464442ddaf67b5fe;hp=ab5653b6c3dad04d6cf2ce4e8892d8e126945eef;hpb=0e6aa53cd10d62c9924d4cdc5ce44a592f81c76a;p=openldap diff --git a/servers/slapd/delete.c b/servers/slapd/delete.c index ab5653b6c3..e31c51bbdb 100644 --- a/servers/slapd/delete.c +++ b/servers/slapd/delete.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2006 The OpenLDAP Foundation. + * Copyright 1998-2007 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -90,6 +90,13 @@ do_delete( op->o_bd = frontendDB; rs->sr_err = frontendDB->be_delete( op, rs ); +#ifdef LDAP_X_TXN + if( rs->sr_err == LDAP_X_TXN_SPECIFY_OKAY ) { + /* skip cleanup */ + return rs->sr_err; + } +#endif + cleanup:; op->o_tmpfree( op->o_req_dn.bv_val, op->o_tmpmemctx ); op->o_tmpfree( op->o_req_ndn.bv_val, op->o_tmpmemctx ); @@ -155,8 +162,7 @@ fe_op_delete( Operation *op, SlapReply *rs ) if ( op->o_bd->be_delete ) { /* do the update here */ int repl_user = be_isupdate( op ); - if ( !SLAP_SINGLE_SHADOW(op->o_bd) || repl_user ) - { + if ( !SLAP_SINGLE_SHADOW(op->o_bd) || repl_user ) { struct berval org_req_dn = BER_BVNULL; struct berval org_req_ndn = BER_BVNULL; struct berval org_dn = BER_BVNULL; @@ -166,8 +172,7 @@ fe_op_delete( Operation *op, SlapReply *rs ) op->o_bd = op_be; - if ( !op->o_bd->be_update_ndn.bv_len || !repl_user ) - { + if ( !op->o_bd->be_update_ndn.bv_len || !repl_user ) { cb.sc_next = op->o_callback; op->o_callback = &cb; }