]> git.sur5r.net Git - openldap/commitdiff
Revert prev commit, simpler fix...
authorHoward Chu <hyc@openldap.org>
Sun, 22 Nov 2009 17:43:48 +0000 (17:43 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 22 Nov 2009 17:43:48 +0000 (17:43 +0000)
servers/slapd/overlays/syncprov.c

index 0b751bd8236aadb346d7fef29afa742659beac52..55909eac227e26f8f3010bc623d5f1c0648fd1d6 100644 (file)
@@ -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.