From: Howard Chu Date: Sun, 22 Nov 2009 17:43:48 +0000 (+0000) Subject: Revert prev commit, simpler fix... X-Git-Tag: ACLCHECK_0~65 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=faddd86f54380d46844ebe4b3d75ddca7f8ae51f;p=openldap Revert prev commit, simpler fix... --- diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index 0b751bd823..55909eac22 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -853,9 +853,14 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, int mode ) } 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 ); @@ -864,7 +869,6 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, int mode ) } /* 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; @@ -872,7 +876,6 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, int mode ) 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; @@ -981,7 +984,6 @@ syncprov_qtask( void *ctx, void *arg ) Operation *op; BackendDB be; int rc; - OpExtra oex; op = &opbuf.ob_op; *op = *so->s_op; @@ -1000,11 +1002,6 @@ syncprov_qtask( void *ctx, void *arg ) 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 ); @@ -2637,13 +2634,6 @@ syncprov_operational( { 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.