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

Re: commit: ldap/servers/slapd backglue.c



Jong wrote:

Log Message:
Fixing backglue behaviors
1) Return NO_SUCH_OBJECT if base object cannot be located
2) Does not search databases that are superior to the base object of the

search

The patch for (2) looks wrong; the if/else block from 327-344 would fix
this just by adding else { continue; } at the end. This problem seems to
be because the if/else block used rs->sr_err but the following switch()
now uses gs.err to detect errors, so there was a logical disconnect there.


Simply adding "else { continue; }" does not solve the problem, because the
"else if ()" @ 342 (v 1.79) does hold for the databases that are superior to
the base object.

On a subtree search, superior databases must still participate in the search. There is nothing that prevents the databases from overlapping, and your exclusion of the superior will prevent relevant entries from being located.


E.g., if we have a configuration

database foo
suffix dc=c,dc=b,dc=a
subordinate

database foo
suffix dc=a

then a subtree search with base dc=b,dc=a must be performed by both databases in order to return a complete result set.

--
  -- Howard Chu
  Chief Architect, Symas Corp.       Director, Highland Sun
  http://www.symas.com               http://highlandsun.com/hyc
  Symas: Premier OpenSource Development and Support