From: Pierangelo Masarati Date: Fri, 4 Apr 2003 11:03:29 +0000 (+0000) Subject: normalize values only if required X-Git-Tag: AUTOCONF_2_57~76 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=172e93bfc9ad8ee95d365817d8deaac077dc831e;p=openldap normalize values only if required --- diff --git a/servers/slapd/back-ldap/back-ldap.h b/servers/slapd/back-ldap/back-ldap.h index 3692f28047..f450254a66 100644 --- a/servers/slapd/back-ldap/back-ldap.h +++ b/servers/slapd/back-ldap/back-ldap.h @@ -158,9 +158,6 @@ extern int suffix_massage_config( struct rewrite_info *info, extern int ldap_dnattr_rewrite( struct rewrite_info *rwinfo, BerVarray a_vals, void *cookie ); #endif /* ENABLE_REWRITE */ -int ldap_build_entry( Operation *op, LDAPMessage *e, Entry *ent, - struct berval *bdn, int private ); - LDAP_END_DECL #endif /* SLAPD_LDAP_H */ diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c index 3ef3b07ff4..76cf81cb4f 100644 --- a/servers/slapd/back-ldap/search.c +++ b/servers/slapd/back-ldap/search.c @@ -50,6 +50,12 @@ #include "lutil.h" +static int +ldap_build_entry( Operation *op, LDAPMessage *e, Entry *ent, + struct berval *bdn, int flags ); +#define LDAP_BUILD_ENTRY_PRIVATE 0x01 +#define LDAP_BUILD_ENTRY_NORMALIZE 0x02 + static struct berval dummy = { 0, NULL }; int @@ -234,7 +240,8 @@ fail:; Entry ent; struct berval bdn; e = ldap_first_entry(lc->ld,res); - if ( ldap_build_entry(op, e, &ent, &bdn, 1) == LDAP_SUCCESS ) { + if ( ldap_build_entry(op, e, &ent, &bdn, + LDAP_BUILD_ENTRY_PRIVATE) == LDAP_SUCCESS ) { Attribute *a; rs->sr_entry = &ent; rs->sr_attrs = op->oq_search.rs_attrs; @@ -379,13 +386,13 @@ finish:; return rc; } -int +static int ldap_build_entry( Operation *op, LDAPMessage *e, Entry *ent, struct berval *bdn, - int private + int flags ) { struct ldapinfo *li = (struct ldapinfo *) op->o_bd->be_private; @@ -395,6 +402,10 @@ ldap_build_entry( struct berval *bv; const char *text; int last; + int private = flags & LDAP_BUILD_ENTRY_PRIVATE; +#ifdef SLAP_NVALUES + int normalize = flags & LDAP_BUILD_ENTRY_NORMALIZE; +#endif /* SLAP_NVALUES */ /* safe assumptions ... */ assert( ent ); @@ -618,22 +629,26 @@ ldap_build_entry( next_attr:; #ifdef SLAP_NVALUES - if ( last && attr->a_desc->ad_type->sat_equality && - attr->a_desc->ad_type->sat_equality->smr_normalize ) { - int i; - - attr->a_nvals = ch_malloc((last+1)*sizeof(struct berval)); - for (i=0; ia_desc->ad_type->sat_equality->smr_normalize( - SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX, - attr->a_desc->ad_type->sat_syntax, - attr->a_desc->ad_type->sat_equality, - &attr->a_vals[i], &attr->a_nvals[i] ); + if ( normalize ) { + if ( last && attr->a_desc->ad_type->sat_equality && + attr->a_desc->ad_type->sat_equality->smr_normalize ) { + int i; + + attr->a_nvals = ch_malloc((last+1)*sizeof(struct berval)); + for (i=0; ia_desc->ad_type->sat_equality->smr_normalize( + SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX, + attr->a_desc->ad_type->sat_syntax, + attr->a_desc->ad_type->sat_equality, + &attr->a_vals[i], &attr->a_nvals[i] ); + } + attr->a_nvals[i].bv_val = NULL; + attr->a_nvals[i].bv_len = 0; + } else { + attr->a_nvals = attr->a_vals; } - attr->a_nvals[i].bv_val = NULL; - attr->a_nvals[i].bv_len = 0; } else { - attr->a_nvals = attr->a_vals; + attr->a_nvals = NULL; } #endif *attrp = attr; @@ -753,7 +768,7 @@ ldap_back_entry_get( *ent = ch_calloc(1,sizeof(Entry)); - rc = ldap_build_entry(op, e, *ent, &bdn, 0); + rc = ldap_build_entry(op, e, *ent, &bdn, LDAP_BUILD_ENTRY_NORMALIZE); if (rc != LDAP_SUCCESS) { ch_free(*ent);