[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://";
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
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

> 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.