mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-27 03:20:22 +08:00
ITS#7710 fix for non-replicated internal ops
Their completion was making slap_graduate_commit_csn() cleanup their parent op's CSN, thus preventing that CSN from propagating to any consumers.
This commit is contained in:
parent
c82dcab9bd
commit
c350b51a63
@ -341,6 +341,7 @@ memberof_value_modify(
|
||||
memberof_t *mo = (memberof_t *)on->on_bi.bi_private;
|
||||
|
||||
Operation op2 = *op;
|
||||
unsigned long opid = op->o_opid;
|
||||
SlapReply rs2 = { REP_RESULT };
|
||||
slap_callback cb = { NULL, slap_null_cb, NULL, NULL };
|
||||
Modifications mod[ 2 ] = { { { 0 } } }, *ml;
|
||||
@ -358,6 +359,7 @@ memberof_value_modify(
|
||||
op2.orm_modlist = NULL;
|
||||
|
||||
/* Internal ops, never replicate these */
|
||||
op2.o_opid = 0; /* shared with op, saved above */
|
||||
op2.orm_no_opattrs = 1;
|
||||
op2.o_dont_replicate = 1;
|
||||
|
||||
@ -472,6 +474,8 @@ memberof_value_modify(
|
||||
slap_mods_free( ml, 1 );
|
||||
}
|
||||
}
|
||||
/* restore original opid */
|
||||
op->o_opid = opid;
|
||||
|
||||
/* FIXME: if old_group_ndn doesn't exist, both delete __and__
|
||||
* add will fail; better split in two operations, although
|
||||
|
@ -527,6 +527,7 @@ refint_repair(
|
||||
dependent_data *dp;
|
||||
SlapReply rs = {REP_RESULT};
|
||||
Operation op2;
|
||||
unsigned long opid;
|
||||
int rc;
|
||||
|
||||
op->o_callback->sc_response = refint_search_cb;
|
||||
@ -565,6 +566,7 @@ refint_repair(
|
||||
*
|
||||
*/
|
||||
|
||||
opid = op2.o_opid;
|
||||
op2 = *op;
|
||||
for ( dp = rq->attrs; dp; dp = dp->next ) {
|
||||
SlapReply rs2 = {REP_RESULT};
|
||||
@ -587,6 +589,7 @@ refint_repair(
|
||||
/* Internal ops, never replicate these */
|
||||
op2.orm_no_opattrs = 1;
|
||||
op2.o_dont_replicate = 1;
|
||||
op2.o_opid = 0;
|
||||
|
||||
/* Set our ModifiersName */
|
||||
if ( SLAP_LASTMOD( op->o_bd ) ) {
|
||||
@ -686,6 +689,7 @@ refint_repair(
|
||||
op2.o_tmpfree( m, op2.o_tmpmemctx );
|
||||
}
|
||||
}
|
||||
op2.o_opid = opid;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user