ITS#10186 overlay response callbacks should ignore op->o_abandon

This commit is contained in:
Howard Chu 2024-03-05 16:55:28 +00:00 committed by Quanah Gibson-Mount
parent 559fdeab4e
commit 9fd8cd2066
3 changed files with 15 additions and 0 deletions

View File

@ -150,6 +150,7 @@ autogroup_add_member_to_group( Operation *op, BerValue *dn, BerValue *ndn, autog
o.orm_no_opattrs = 1;
o.o_managedsait = SLAP_CONTROL_CRITICAL;
o.o_relax = SLAP_CONTROL_CRITICAL;
o.o_abandon = 0;
oex.oe_key = (void *)&autogroup;
LDAP_SLIST_INSERT_HEAD( &o.o_extra, &oex, oe_next );
@ -206,6 +207,7 @@ autogroup_add_member_values_to_group( Operation *op, struct berval *dn, autogrou
o.orm_no_opattrs = 1;
o.o_managedsait = SLAP_CONTROL_CRITICAL;
o.o_relax = SLAP_CONTROL_CRITICAL;
o.o_abandon = 0;
oex.oe_key = (void *)&autogroup;
LDAP_SLIST_INSERT_HEAD( &o.o_extra, &oex, oe_next );
@ -279,6 +281,7 @@ autogroup_delete_member_from_group( Operation *op, BerValue *dn, BerValue *ndn,
o.o_permissive_modify = 1;
o.o_dont_replicate = 1;
o.orm_no_opattrs = 1;
o.o_abandon = 0;
oex.oe_key = (void *)&autogroup;
LDAP_SLIST_INSERT_HEAD( &o.o_extra, &oex, oe_next );
@ -335,6 +338,7 @@ autogroup_delete_member_values_from_group( Operation *op, struct berval *dn, aut
o.orm_no_opattrs = 1;
o.o_managedsait = SLAP_CONTROL_CRITICAL;
o.o_relax = SLAP_CONTROL_CRITICAL;
o.o_abandon = 0;
oex.oe_key = (void *)&autogroup;
LDAP_SLIST_INSERT_HEAD( &o.o_extra, &oex, oe_next );
@ -502,6 +506,10 @@ autogroup_add_members_from_filter( Operation *op, Entry *e, autogroup_entry_t *a
Debug(LDAP_DEBUG_TRACE, "==> autogroup_add_members_from_filter <%s>\n",
age->age_dn.bv_val );
/* if modify isn't set, we're pre-op and should honor abandon flag */
if ( op->o_abandon && !modify )
return 0;
o.ors_attrsonly = 0;
o.o_tag = LDAP_REQ_SEARCH;
@ -520,6 +528,7 @@ autogroup_add_members_from_filter( Operation *op, Entry *e, autogroup_entry_t *a
o.ors_slimit = SLAP_NO_LIMIT;
o.ors_attrs = agf->agf_anlist ? agf->agf_anlist : slap_anlist_no_attrs;
o.o_do_not_cache = 1;
o.o_abandon = 0;
agg.agg_group = age;
agg.agg_filter = agf;
@ -562,6 +571,7 @@ autogroup_add_members_from_filter( Operation *op, Entry *e, autogroup_entry_t *a
o.o_permissive_modify = 1;
o.o_dont_replicate = 1;
o.orm_no_opattrs = 1;
o.o_abandon = 0;
oex.oe_key = (void *)&autogroup;
LDAP_SLIST_INSERT_HEAD( &o.o_extra, &oex, oe_next );

View File

@ -388,6 +388,10 @@ memberof_value_modify(
op2.orm_no_opattrs = 1;
op2.o_dont_replicate = 1;
/* main op has already completed if we got here, so even
* if its abandon flag was set we must complete as well. */
op2.o_abandon = 0;
if ( !BER_BVISNULL( &mo->mo_ndn ) ) {
ml = &mod[ mcnt ];
ml->sml_numvals = 1;

View File

@ -603,6 +603,7 @@ refint_repair(
op->o_ndn = op->o_bd->be_rootndn;
cache = op->o_do_not_cache;
op->o_do_not_cache = 1;
op->o_abandon = 0;
/* search */
rc = op->o_bd->be_search( op, &rs );