The OpenLDAP libraries can take defaults for LDAP servers,
search base from different presets, most obviously from the
ldap.conf
configuration file
(manpage).
Unfortunately, Exim and Perdition cannot make use of it in the
way the code initializes the library. To avoid having to
configure the LDAP search base and even more important, the
servers to use, in both Exim's and Perdition's config files, I
delveloped a patch for both.
The idea of the patch is to avoid breaking existing
configurations and to only extend the feature without
drawbacks. This is achieved in two steps. First, if no servers
are specified and the protocol is not LDAPS in the Exim
resp. Perdition configuration, the library is initialized with
a NULL
argument. This causes OpenLDAP to use the
default servers and protocol configured.
The solution for the servers does not work for the default
search base, as it is possible to use an empty search base when
querying LDAP servers (some servers provide some configuration
parameters in the root). Instead I decided to use the special
keyword default as string for the search
base. As default is not a valid search base
specification, I'm sure that this won't break existing
configurations. If code detects the string as search base, it
gets the default search base from the
LDAPURLDesc
, generated from the library's
initialization.