mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-25 00:59:45 -05:00
ITS#7025 handle Abandon in backglue
This commit is contained in:
parent
4f5d087b4f
commit
5829eb44a1
1 changed files with 25 additions and 0 deletions
|
|
@ -258,6 +258,30 @@ glue_op_func ( Operation *op, SlapReply *rs )
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
glue_op_abandon( Operation *op, SlapReply *rs )
|
||||
{
|
||||
slap_overinst *on = (slap_overinst *)op->o_bd->bd_info;
|
||||
glueinfo *gi = (glueinfo *)on->on_bi.bi_private;
|
||||
BackendDB *b0 = op->o_bd;
|
||||
BackendInfo *bi0 = op->o_bd->bd_info;
|
||||
int i;
|
||||
|
||||
b0->bd_info = on->on_info->oi_orig;
|
||||
|
||||
for (i = gi->gi_nodes-1; i >= 0; i--) {
|
||||
assert( gi->gi_n[i].gn_be->be_nsuffix != NULL );
|
||||
op->o_bd = gi->gi_n[i].gn_be;
|
||||
if ( op->o_bd == b0 )
|
||||
continue;
|
||||
if ( op->o_bd->bd_info->bi_op_abandon )
|
||||
op->o_bd->bd_info->bi_op_abandon( op, rs );
|
||||
}
|
||||
op->o_bd = b0;
|
||||
op->o_bd->bd_info = bi0;
|
||||
return SLAP_CB_CONTINUE;
|
||||
}
|
||||
|
||||
static int
|
||||
glue_response ( Operation *op, SlapReply *rs )
|
||||
{
|
||||
|
|
@ -1510,6 +1534,7 @@ glue_sub_init()
|
|||
glue.on_bi.bi_op_modrdn = glue_op_func;
|
||||
glue.on_bi.bi_op_add = glue_op_func;
|
||||
glue.on_bi.bi_op_delete = glue_op_func;
|
||||
glue.on_bi.bi_op_abandon = glue_op_abandon;
|
||||
glue.on_bi.bi_extended = glue_op_func;
|
||||
|
||||
glue.on_bi.bi_chk_referrals = glue_chk_referrals;
|
||||
|
|
|
|||
Loading…
Reference in a new issue