Operation *op;
BackendDB be;
int rc;
+ OpExtra oex;
op = &opbuf.ob_op;
*op = *so->s_op;
be.be_flags |= SLAP_DBFLAG_OVERLAY;
op->o_bd = &be;
LDAP_SLIST_FIRST(&op->o_extra) = NULL;
+
+ /* Let syncprov_operational know it's us */
+ oex.oe_key = (void *)syncprov_qtask;
+ LDAP_SLIST_INSERT_HEAD(&op->o_extra, &oex, oe_next);
+
op->o_callback = NULL;
rc = syncprov_qplay( op, so );
{
slap_overinst *on = (slap_overinst *)op->o_bd->bd_info;
syncprov_info_t *si = (syncprov_info_t *)on->on_bi.bi_private;
+ OpExtra *oex;
+
+ /* short-circuit, don't want backends handling this */
+ LDAP_SLIST_FOREACH(oex, &op->o_extra, oe_next) {
+ if ( oex->oe_key == (void *)syncprov_qtask )
+ return LDAP_SUCCESS;
+ }
/* This prevents generating unnecessarily; frontend will strip
* any statically stored copy.