On Fri, Feb 9, 2018 at 4:05 PM, Peter Eisentraut
<peter.eisentr...@2ndquadrant.com> wrote:
> After the LDAP code was switched to use ldap_initialize() as part of the
> ldaps support, ldapi (LDAP over Unix-domain sockets) also works.  I
> noticed an old bug report (#13625) that asked for it.  So I suggest this
> patch to document this and add some tests.
>
> One flaw is that this only works when using the URL syntax.  Providing a
> separate option would require coding URL escaping, since ultimately an
> URL must be composed and passed to ldap_initialize().  But since
> OpenLDAP apparently now considers URLs to be the preferred form for
> connection parameters, I'm comfortable just sticking to that format.

Nice.  The test doesn't actually succeed in reloading the pg_hba.conf
file though:

2018-02-09 16:41:15.886 NZDT [24472] LOG:  received SIGHUP, reloading
configuration files
2018-02-09 16:41:15.893 NZDT [24472] LOG:  unsupported LDAP URL scheme: ldapi
2018-02-09 16:41:15.893 NZDT [24472] LOG:  pg_hba.conf was not reloaded

I think hba.c needs to learn to consider "ldapi" to be acceptable
(after it parses the URL).  Then I think when
InitializeLDAPConnection() reconstitutes the URL with psprintf, it'll
probably need to avoid sticking :port on the end.

The fact that we take the URL to pieces and then stick it back
together again may seem a bit odd, but it is required by the
documentation (ldap_initialize() wants a URL "containing only the
schema, the host, and the port fields").

I see there is another scheme called "cldap" (which seems to be
something like LDAP over UDP).  I wonder if anyone cares about that.

-- 
Thomas Munro
http://www.enterprisedb.com

Reply via email to