[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: backglue.c sometimes falsely returns LDAP_SIZELIMIT_EXCEEDED (ITS#2888)



On Mon, Jan 19, 2004 at 08:21:03AM +0000, ando@sys-net.it wrote:
> 
> > The current fix needs to be reworked, it ignores the case of
> > administrative limits being hit.
> 
> The user-enforced limits are honored correctly, 
I just tested again, and it still fails in some case. E.g. I have the
following databases:

database ldap
uri "ldap://10.0.0.1/";
subordinate
suffix          "ou=people,dc=suse,dc=de"
[..]

database        ldbm
suffix          "dc=suse,dc=de"
[..]

The second database contains exactly one entry matching the filter
"uid=rh*". And the first one contains some more entries that match the
filter.
If I now  do a subtree search on base "dc=suse,dc=de" with the filter
"uid=rh*" and sizelimit set to 1. I get the entry from the first datebase
with the result code set to LDAP_SUCCESS ( correct would be
SIZE_LIMIT_EXCEEDED ). If I change the sizelimt to 2 it correctly returns
2 entries and SIZE_LIMIT_EXCEEDED, as there are more entries matching the
filter.

> with a possible exception when the user requests a limit that's exactly
> equal to the number of entries, which I do not recall whether it should
> be a success or a sizelimit exceeded.
That should be success, AFAIK.

> For administrative limits, I think there's a design issue:
> each database in the glued pool will take care of enforcing
> admin limits within its scope; we also need to take care of
> the global (or glued) limits, which, of course, can only be
> of global scope.  So the glue_back_search() will need to find
> if there's any, and apply them.  Did I miss anything?
> 
> Ando.

-- 
regards,
    Ralf