#else
#include <winldap.h>
-/* Correct header from the Platform SDK */
-typedef
-ULONG (*__ldap_start_tls_sA) (IN PLDAP ExternalHandle,
- OUT PULONG ServerReturnValue,
- OUT LDAPMessage **result,
- IN PLDAPControlA * ServerControls,
- IN PLDAPControlA * ClientControls
-);
#endif
static int CheckLDAPAuth(Port *port);
#ifndef WIN32
if ((r = ldap_start_tls_s(*ldap, NULL, NULL)) != LDAP_SUCCESS)
#else
- static __ldap_start_tls_sA _ldap_start_tls_sA = NULL;
-
- if (_ldap_start_tls_sA == NULL)
- {
- /*
- * Need to load this function dynamically because it may not exist
- * on Windows, and causes a load error for the whole exe if
- * referenced.
- */
- HANDLE ldaphandle;
-
- ldaphandle = LoadLibrary("WLDAP32.DLL");
- if (ldaphandle == NULL)
- {
- /*
- * should never happen since we import other files from
- * wldap32, but check anyway
- */
- ereport(LOG,
- (errmsg("could not load library \"%s\": error code %lu",
- "WLDAP32.DLL", GetLastError())));
- ldap_unbind(*ldap);
- return STATUS_ERROR;
- }
- _ldap_start_tls_sA = (__ldap_start_tls_sA) (pg_funcptr_t) GetProcAddress(ldaphandle, "ldap_start_tls_sA");
- if (_ldap_start_tls_sA == NULL)
- {
- ereport(LOG,
- (errmsg("could not load function _ldap_start_tls_sA in wldap32.dll"),
- errdetail("LDAP over SSL is not supported on this platform.")));
- ldap_unbind(*ldap);
- FreeLibrary(ldaphandle);
- return STATUS_ERROR;
- }
-
- /*
- * LDAP handle on purpose, because we need the library to
- * stay open. This is ok because it will only ever be once
- * per process and is automatically cleaned up on process exit.
- */
- }
- if ((r = _ldap_start_tls_sA(*ldap, NULL, NULL, NULL, NULL)) != LDAP_SUCCESS)
+ if ((r = ldap_start_tls_s(*ldap, NULL, NULL, NULL, NULL)) != LDAP_SUCCESS)
#endif
{
ereport(LOG,