}
static int
-rwm_attrs( Operation *op, SlapReply *rs, Attribute** a_first )
+rwm_attrs( Operation *op, SlapReply *rs, Attribute** a_first, int stripEntryDN )
{
slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
struct ldaprwmap *rwmap =
}
if ( (*ap)->a_desc == slap_schema.si_ad_entryDN ) {
- /* will be generated by frontend */
- goto cleanup_attr;
- }
-
- if ( !isupdate && (*ap)->a_desc->ad_type->sat_no_user_mod
+ if ( stripEntryDN ) {
+ /* will be generated by frontend */
+ goto cleanup_attr;
+ }
+
+ } else if ( !isupdate
+ && (*ap)->a_desc->ad_type->sat_no_user_mod
&& (*ap)->a_desc->ad_type != slap_schema.si_at_undefined )
{
goto next_attr;
/* FIXME: the entries are in the remote mapping form;
* so we need to select those attributes we are willing
* to return, and remap them accordingly */
- (void)rwm_attrs( op, rs, &e->e_attrs );
+ (void)rwm_attrs( op, rs, &e->e_attrs, 1 );
+
+ if ( rs->sr_operational_attrs ) {
+ (void)rwm_attrs( op, rs, &rs->sr_operational_attrs, 0 );
+ }
rs->sr_entry = e;
rs->sr_flags = flags;
* so we need to select those attributes we are willing
* to return, and remap them accordingly */
if ( rs->sr_operational_attrs ) {
- rwm_attrs( op, rs, &rs->sr_operational_attrs );
+ rwm_attrs( op, rs, &rs->sr_operational_attrs, 1 );
}
return SLAP_CB_CONTINUE;