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

slapd internal API change

The API change I talked about at the ODD is now committed to CVS HEAD. Both
back-bdb and back-ldbm pass the test suite; I have not tested any of the
other backends. I didn't update:
	back-meta, back-monitor - need to check with Pierangelo
	back-perl - looking at Eric Stokes' patches still
	back-sql - don't have any SQL libraries to build with

This change makes a number of the different function typedef's redundant, as
most of the definitions are now identical. I think the 4 slap_callback defs,
for example, could be consolidated into 2, or maybe just 1, using the sr_type
field to distinguish what needs to be done.

The original idea was to put everything - request parameters and results -
into the Operation structure. This turned out to be a bad idea in the
presence of persistent searches, which keeps the Search Operation hanging
around for later use. So I broke out the result parameters into a separate
SlapReply structure. This allows multiple threads to generate persistent
search responses without any contention issues.

As I was going thru the (back-bdb) persistent search code, I saw that much of
it was a copy of the original search code, but it was a copy from several
revisions back, missing some bug fixes and such. Rather than try to bring it
up to date, I munged all of it into the existing search.c. The result is a
large and ugly search function. I'm not sure this was a great idea, as the
readability is poor, but I think it's better than fixing two sets of similar
code in two different places. It needs some close attention though; I may
have missed something in the merge. (Don't know, haven't tried it.)

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