X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Fresult.c;h=0afad284eb9bb18b506e7eb506fdef45406b4bb4;hb=7a296e605128cc84012f9c783179453797fe2685;hp=7be8d952494c4f50a856de25e982e7e63e31f708;hpb=3783df8da6e48d3e58e3c4b3f445b9a2eed2267d;p=openldap diff --git a/servers/slapd/result.c b/servers/slapd/result.c index 7be8d95249..0afad284eb 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -742,9 +742,10 @@ slap_send_search_entry( Operation *op, SlapReply *rs ) } /* Every 64 entries, check for thread pool pause */ - if (( rs->sr_nentries & 0x3f == 0x3f ) && + if ( ( ( rs->sr_nentries & 0x3f ) == 0x3f ) && ldap_pvt_thread_pool_query( &connection_pool, - LDAP_PVT_THREAD_POOL_PARAM_PAUSING, &i ) == 0 && i ) { + LDAP_PVT_THREAD_POOL_PARAM_PAUSING, &i ) == 0 && i ) + { return LDAP_BUSY; } @@ -897,12 +898,16 @@ slap_send_search_entry( Operation *op, SlapReply *rs ) } else { /* specific attrs requested */ if ( is_at_operational( desc->ad_type ) ) { - if ( !SLAP_OPATTRS( rs->sr_attr_flags ) && - !ad_inlist( desc, rs->sr_attrs ) ) - { - continue; + /* if not explicitly requested */ + if ( !ad_inlist( desc, rs->sr_attrs )) { + /* if not all op attrs requested, skip */ + if ( !SLAP_OPATTRS( rs->sr_attr_flags )) + continue; + /* if DSA-specific and replicating, skip */ + if ( op->o_sync != SLAP_CONTROL_NONE && + desc->ad_type->sat_usage == LDAP_SCHEMA_DSA_OPERATION ) + continue; } - } else { if ( !userattrs && !ad_inlist( desc, rs->sr_attrs ) ) { continue;