diff --git a/ldap/servers/plugins/distrib/distrib.c b/ldap/servers/plugins/distrib/distrib.c index 7cf1a88..69c4edb 100644 --- a/ldap/servers/plugins/distrib/distrib.c +++ b/ldap/servers/plugins/distrib/distrib.c @@ -57,9 +57,7 @@ int alpha_distribution(Slapi_PBlock *pb, Slapi_DN * target_dn, { unsigned long op_type; Slapi_Operation *op; - char *rdn_type; - char *rdn_value; - Slapi_RDN *rdn = NULL; + const char *ndn; char c; /* first check the operation type @@ -77,12 +75,9 @@ int alpha_distribution(Slapi_PBlock *pb, Slapi_DN * target_dn, * go in backend 0 */ - /* get the first char of first value of rdn */ - rdn = slapi_rdn_new(); - slapi_sdn_get_rdn(target_dn, rdn); - slapi_rdn_get_first(rdn, &rdn_type, &rdn_value); - c = rdn_value[0]; - slapi_rdn_free(&rdn); + /* get the first char of first value of normalized dn */ + ndn = slapi_sdn_get_ndn(target_dn); + c = ndn[0]; if (!(((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')) )) @@ -131,6 +126,9 @@ int hash_distribution(Slapi_PBlock *pb, Slapi_DN * target_dn, slapi_sdn_get_rdn(target_dn, rdn); slapi_rdn_get_first(rdn, &rdn_type, &rdn_value); + /* ignore case */ + slapi_dn_ignore_case(rdn_value); + /* compute the hash value */ hash_value = 0; while (*rdn_value)