Joe Orton wrote:

From reading the OpenLDAP source code the libldap_r build appears to compile in a bunch of mutex locking calls around many/most of the ldap_* interfaces.

It's not obvious to me whether:

a) this is because those calls are in fact manipulating process-global state in some thread-unsafe way (not obvious how, if so), or

b) this is enabling an additional API guarantee, that concurrent use of a single LDAP * object from multiple threads is safe.

I would assume any user of this apr-util API, hahaha sorry, let me start again.... I would assume that httpd does not rely on the additional API guarantee in (b).

Since libldap and libldap_r seem to implement the same set of symbols (and without symbol versioning) this kind of issue is a minefield for downstream distributors, if apr-util/httpd link against libldap_r and some perl LDAP foo links against libldap, everything goes boom.

This problem is wider then than just APR.

In that case, it looks like we need a build flag to explicitly choose whether we are building against ldap or ldap_r, and let the builder/distro decide which they want to support by default.

Regards,
Graham
--

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to