X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-meta%2Fdelete.c;h=13f8f527d982cf26f2365026d785872d4ee9fc1c;hb=8d14165274b244d6f91587502bd0a23ec7b08a87;hp=c3c8ea8f5ff02f42d6e68521843b68b4ec743a9d;hpb=65b49dd3120ac2cdd6a80b95ca216fb2cc6a2241;p=openldap diff --git a/servers/slapd/back-meta/delete.c b/servers/slapd/back-meta/delete.c index c3c8ea8f5f..13f8f527d9 100644 --- a/servers/slapd/back-meta/delete.c +++ b/servers/slapd/back-meta/delete.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1999-2004 The OpenLDAP Foundation. + * Copyright 1999-2005 The OpenLDAP Foundation. * Portions Copyright 2001-2003 Pierangelo Masarati. * Portions Copyright 1999-2003 Howard Chu. * All rights reserved. @@ -37,7 +37,7 @@ meta_back_delete( Operation *op, SlapReply *rs ) struct metainfo *li = ( struct metainfo * )op->o_bd->be_private; struct metaconn *lc; int candidate = -1; - struct berval mdn = { 0, NULL }; + struct berval mdn = BER_BVNULL; dncookie dc; lc = meta_back_getconn( op, rs, META_OP_REQUIRE_SINGLE, @@ -47,9 +47,14 @@ meta_back_delete( Operation *op, SlapReply *rs ) return -1; } - if ( !meta_back_dobind( lc, op ) - || !meta_back_is_valid( lc, candidate ) ) { + if ( !meta_back_dobind( lc, op ) ) { + rs->sr_err = LDAP_UNAVAILABLE; + + } else if ( !meta_back_is_valid( lc, candidate ) ) { rs->sr_err = LDAP_OTHER; + } + + if ( rs->sr_err != LDAP_SUCCESS ) { send_ldap_result( op, rs ); return -1; } @@ -57,7 +62,7 @@ meta_back_delete( Operation *op, SlapReply *rs ) /* * Rewrite the compare dn, if needed */ - dc.rwmap = &li->targets[ candidate ]->rwmap; + dc.rwmap = &li->targets[ candidate ]->mt_rwmap; dc.conn = op->o_conn; dc.rs = rs; dc.ctx = "deleteDN"; @@ -67,10 +72,12 @@ meta_back_delete( Operation *op, SlapReply *rs ) return -1; } - ldap_delete_s( lc->conns[ candidate ].ld, mdn.bv_val ); + (void)ldap_delete_ext_s( lc->mc_conns[ candidate ].msc_ld, mdn.bv_val, + NULL, NULL ); if ( mdn.bv_val != op->o_req_dn.bv_val ) { free( mdn.bv_val ); + BER_BVZERO( &mdn ); } return meta_back_op_result( lc, op, rs );