}
rs.sr_ctrls = ctrls;
+ rs.sr_entry = &e_uuid;
+ if ( mode == LDAP_SYNC_ADD || mode == LDAP_SYNC_MODIFY ) {
+ e_uuid = *opc->se;
+ e_uuid.e_private = NULL;
+ }
+
switch( mode ) {
case LDAP_SYNC_ADD:
- rs.sr_entry = opc->se;
if ( opc->sreference && so->s_op->o_managedsait <= SLAP_CONTROL_IGNORED ) {
rs.sr_ref = get_entry_referrals( op, rs.sr_entry );
rs.sr_err = send_search_reference( op, &rs );
}
/* fallthru */
case LDAP_SYNC_MODIFY:
- rs.sr_entry = opc->se;
rs.sr_attrs = op->ors_attrs;
rs.sr_err = send_search_entry( op, &rs );
break;
e_uuid.e_attrs = NULL;
e_uuid.e_name = opc->sdn;
e_uuid.e_nname = opc->sndn;
- rs.sr_entry = &e_uuid;
if ( opc->sreference && so->s_op->o_managedsait <= SLAP_CONTROL_IGNORED ) {
struct berval bv = BER_BVNULL;
rs.sr_ref = &bv;
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.