version 1.304, 2009/11/22 03:43:34
|
version 1.305, 2009/11/22 16:43:48
|
Line 853 syncprov_sendresp( Operation *op, opcook
|
Line 853 syncprov_sendresp( Operation *op, opcook
|
} |
} |
|
|
rs.sr_ctrls = ctrls; |
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 ) { |
switch( mode ) { |
case LDAP_SYNC_ADD: |
case LDAP_SYNC_ADD: |
rs.sr_entry = opc->se; |
|
if ( opc->sreference && so->s_op->o_managedsait <= SLAP_CONTROL_IGNORED ) { |
if ( opc->sreference && so->s_op->o_managedsait <= SLAP_CONTROL_IGNORED ) { |
rs.sr_ref = get_entry_referrals( op, rs.sr_entry ); |
rs.sr_ref = get_entry_referrals( op, rs.sr_entry ); |
rs.sr_err = send_search_reference( op, &rs ); |
rs.sr_err = send_search_reference( op, &rs ); |
Line 864 syncprov_sendresp( Operation *op, opcook
|
Line 869 syncprov_sendresp( Operation *op, opcook
|
} |
} |
/* fallthru */ |
/* fallthru */ |
case LDAP_SYNC_MODIFY: |
case LDAP_SYNC_MODIFY: |
rs.sr_entry = opc->se; |
|
rs.sr_attrs = op->ors_attrs; |
rs.sr_attrs = op->ors_attrs; |
rs.sr_err = send_search_entry( op, &rs ); |
rs.sr_err = send_search_entry( op, &rs ); |
break; |
break; |
Line 872 syncprov_sendresp( Operation *op, opcook
|
Line 876 syncprov_sendresp( Operation *op, opcook
|
e_uuid.e_attrs = NULL; |
e_uuid.e_attrs = NULL; |
e_uuid.e_name = opc->sdn; |
e_uuid.e_name = opc->sdn; |
e_uuid.e_nname = opc->sndn; |
e_uuid.e_nname = opc->sndn; |
rs.sr_entry = &e_uuid; |
|
if ( opc->sreference && so->s_op->o_managedsait <= SLAP_CONTROL_IGNORED ) { |
if ( opc->sreference && so->s_op->o_managedsait <= SLAP_CONTROL_IGNORED ) { |
struct berval bv = BER_BVNULL; |
struct berval bv = BER_BVNULL; |
rs.sr_ref = &bv; |
rs.sr_ref = &bv; |
Line 981 syncprov_qtask( void *ctx, void *arg )
|
Line 984 syncprov_qtask( void *ctx, void *arg )
|
Operation *op; |
Operation *op; |
BackendDB be; |
BackendDB be; |
int rc; |
int rc; |
OpExtra oex; |
|
|
|
op = &opbuf.ob_op; |
op = &opbuf.ob_op; |
*op = *so->s_op; |
*op = *so->s_op; |
Line 1000 syncprov_qtask( void *ctx, void *arg )
|
Line 1002 syncprov_qtask( void *ctx, void *arg )
|
be.be_flags |= SLAP_DBFLAG_OVERLAY; |
be.be_flags |= SLAP_DBFLAG_OVERLAY; |
op->o_bd = &be; |
op->o_bd = &be; |
LDAP_SLIST_FIRST(&op->o_extra) = NULL; |
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; |
op->o_callback = NULL; |
|
|
rc = syncprov_qplay( op, so ); |
rc = syncprov_qplay( op, so ); |
Line 2637 syncprov_operational(
|
Line 2634 syncprov_operational(
|
{ |
{ |
slap_overinst *on = (slap_overinst *)op->o_bd->bd_info; |
slap_overinst *on = (slap_overinst *)op->o_bd->bd_info; |
syncprov_info_t *si = (syncprov_info_t *)on->on_bi.bi_private; |
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 |
/* This prevents generating unnecessarily; frontend will strip |
* any statically stored copy. |
* any statically stored copy. |