/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2002-2006 The OpenLDAP Foundation.
+ * Copyright 2002-2009 The OpenLDAP Foundation.
* Portions Copyright 1997,2002-2003 IBM Corporation.
* All rights reserved.
*
pblock_set_default( Slapi_PBlock *pb, int param, void *value )
{
slapi_pblock_class_t pbClass;
- size_t i;
+ int i;
pbClass = pblock_get_param_class( param );
if ( pbClass == PBLOCK_CLASS_INVALID ) {
op = pb->pb_op;
be_orig = op->o_bd;
- op->o_bd = select_backend( &op->o_req_ndn, 0, 0 );
+ op->o_bd = select_backend( &op->o_req_ndn, 0 );
rc = (*bep)( op );
op->o_bd = be_orig;
rc = mods_structural_class( pb->pb_op->ora_modlist,
&tmpval, &pb->pb_rs->sr_text,
- pb->pb_textbuf, sizeof( pb->pb_textbuf ));
+ pb->pb_textbuf, sizeof( pb->pb_textbuf ),
+ pb->pb_op->o_tmpmemctx );
*((char **)value) = tmpval.bv_val;
} else {
rc = PBLOCK_ERROR;
break;
case SLAPI_BACKEND:
PBLOCK_ASSERT_OP( pb, 0 );
- *((BackendDB **)value) = select_backend( &pb->pb_op->o_req_ndn, 0, 0 );
+ *((BackendDB **)value) = select_backend( &pb->pb_op->o_req_ndn, 0 );
break;
case SLAPI_BE_TYPE:
PBLOCK_ASSERT_OP( pb, 0 );
break;
}
- newmods = slapi_int_ldapmods2modifications( (LDAPMod **)value );
+ newmods = slapi_int_ldapmods2modifications( pb->pb_op, (LDAPMod **)value );
if ( newmods != NULL ) {
slap_mods_free( *mlp, 1 );
*mlp = newmods;
break;
case SLAPI_SEARCH_RESULT_ENTRY:
PBLOCK_ASSERT_OP( pb, 0 );
+ if ( pb->pb_rs->sr_flags & REP_ENTRY_MUSTBEFREED ) {
+ entry_free( pb->pb_rs->sr_entry );
+ } else if ( pb->pb_rs->sr_flags & REP_ENTRY_MUSTRELEASE ) {
+ be_entry_release_r( pb->pb_op, pb->pb_rs->sr_entry );
+ pb->pb_rs->sr_flags ^= REP_ENTRY_MUSTRELEASE;
+ }
pb->pb_rs->sr_entry = (Slapi_Entry *)value;
+ pb->pb_rs->sr_flags |= REP_ENTRY_MUSTBEFREED;
break;
case SLAPI_BIND_RET_SASLCREDS:
PBLOCK_ASSERT_OP( pb, 0 );