mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
dirmngr: Try ldap protocol V3 as fallback
* dirmngr/dirmngr_ldap.c (fetch_ldap): Try V3 Protocol in case default Protocol gives error. -- Servers may have blocked V2 Protocol, in which case the bind will result in a Protocol Error. In that case we try again with v3 Protocol if the ldap libarary used to compile dirmngr supports V3. Signed-off-by: Andre Heinecke <aheinecke@intevation.de>
This commit is contained in:
parent
5faddcb292
commit
f989b6ee0d
@ -641,6 +641,18 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp)
|
|||||||
/* Fixme: Can we use MYOPT->user or is it shared with other theeads?. */
|
/* Fixme: Can we use MYOPT->user or is it shared with other theeads?. */
|
||||||
ret = my_ldap_simple_bind_s (ld, myopt->user, myopt->pass);
|
ret = my_ldap_simple_bind_s (ld, myopt->user, myopt->pass);
|
||||||
npth_protect ();
|
npth_protect ();
|
||||||
|
#ifdef LDAP_VERSION3
|
||||||
|
if (ret == LDAP_PROTOCOL_ERROR)
|
||||||
|
{
|
||||||
|
int version = LDAP_VERSION3;
|
||||||
|
/* Protocol error could mean that the server only supports v3 */
|
||||||
|
npth_unprotect ();
|
||||||
|
log_debug ("Protocol error, retrying bind with V3 Protocol. \n");
|
||||||
|
ldap_set_option (ld, LDAP_OPT_PROTOCOL_VERSION, &version);
|
||||||
|
ret = my_ldap_simple_bind_s (ld, myopt->user, myopt->pass);
|
||||||
|
npth_protect ();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
log_error (_("binding to '%s:%d' failed: %s\n"),
|
log_error (_("binding to '%s:%d' failed: %s\n"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user