+ if ( op->o_abandon ) return SLAPD_ABANDON;
+
+ ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );
+
+ for (g = op->o_conn->c_groups; g; g=g->ga_next) {
+ if (g->ga_be != op->o_bd || g->ga_oc != group_oc ||
+ g->ga_at != group_at || g->ga_len != gr_ndn->bv_len)
+ continue;
+ if (strcmp( g->ga_ndn, gr_ndn->bv_val ) == 0)
+ break;
+ }
+
+ ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
+
+ if (g) {
+ return g->ga_res;
+ }
+
+ if ( target && dn_match( &target->e_nname, gr_ndn ) ) {
+ e = target;
+ } else {
+ rc = be_entry_get_rw(op, gr_ndn, group_oc, group_at, 0, &e );
+ }
+ if ( e ) {
+ a = attr_find( e->e_attrs, group_at );
+ if ( a ) {
+ rc = value_find_ex( group_at,
+ SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH |
+ SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH,
+ a->a_nvals, op_ndn, op->o_tmpmemctx );
+ } else {
+ rc = LDAP_NO_SUCH_ATTRIBUTE;