Archie Cobbs (
Fri, 31 May 1996 13:09:00 -0700 (PDT)


I'm writing a custom backend for slapd, and have a question...
Does slapd guarantee that for every bind() call to the backend,
there is either a corresponding unbind() call, or (if the client
craps out or otherwise terminates the connection abnormally) an
abandon() call to the backend (but not both)?

The idea here is to try and use bind and unbind as a sortof
transaction mechanism, whereby (in this particular backend only)
modifications would be committed only after an unbind() call to
the backend. If an abandon() call came instead, the transaction
would be aborted.

In no case though should there be any ``dangling'' bind()'s.

As an example, suppose you wanted to use gdbm for this backend,
but you wanted to open & lock the database on each bind() and then
unlock it on each unbind() or abandon(), so that perhaps some
other process can access the database in the meantime.

Comments on the sanity of this idea would be greatly appreciated
also :-)


P.S. Correct me if wrong, but it is already part of the LDAP protocol
that each individual operation (eg, modify) is done atomically.
There is no further guarantee than this though.

Archie L. Cobbs, * Whistle Communications Corporation