]> git.sur5r.net Git - openldap/commitdiff
Don't populate member list unless it was requested
authorHoward Chu <hyc@openldap.org>
Tue, 11 Sep 2007 14:10:50 +0000 (14:10 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 11 Sep 2007 14:10:50 +0000 (14:10 +0000)
servers/slapd/overlays/dynlist.c

index 50119eb7a16e393d690615d03b67daebcc4efdfb..7082fb253ad0f6d1b3d59c5a604b31b58b9f3af4 100644 (file)
@@ -334,6 +334,19 @@ dynlist_prepare_entry( Operation *op, SlapReply *rs, dynlist_info_t *dli )
                return SLAP_CB_CONTINUE;
        }
 
+#ifndef SLAP_OPATTRS
+       opattrs = ( rs->sr_attrs == NULL ) ? 0 : an_find( rs->sr_attrs, &AllOper );
+       userattrs = ( rs->sr_attrs == NULL ) ? 1 : an_find( rs->sr_attrs, &AllUser );
+#else /* SLAP_OPATTRS */
+       opattrs = SLAP_OPATTRS( rs->sr_attr_flags );
+       userattrs = SLAP_USERATTRS( rs->sr_attr_flags );
+#endif /* SLAP_OPATTRS */
+
+       /* Don't generate member list if it wasn't requested */
+       if ( dli->dli_member_ad && !userattrs && !ad_inlist( dli->dli_member_ad, rs->sr_attrs ) ) {
+               return SLAP_CB_CONTINUE;
+       }
+
        if ( !( rs->sr_flags & REP_ENTRY_MODIFIABLE ) ) {
                e = entry_dup( rs->sr_entry );
        } else {
@@ -360,14 +373,6 @@ dynlist_prepare_entry( Operation *op, SlapReply *rs, dynlist_info_t *dli )
        o.ors_tlimit = SLAP_NO_LIMIT;
        o.ors_slimit = SLAP_NO_LIMIT;
 
-#ifndef SLAP_OPATTRS
-       opattrs = ( rs->sr_attrs == NULL ) ? 0 : an_find( rs->sr_attrs, &AllOper );
-       userattrs = ( rs->sr_attrs == NULL ) ? 1 : an_find( rs->sr_attrs, &AllUser );
-#else /* SLAP_OPATTRS */
-       opattrs = SLAP_OPATTRS( rs->sr_attr_flags );
-       userattrs = SLAP_USERATTRS( rs->sr_attr_flags );
-#endif /* SLAP_OPATTRS */
-
        for ( url = a->a_nvals; !BER_BVISNULL( url ); url++ ) {
                LDAPURLDesc     *lud = NULL;
                int             i, j;