diff options
Diffstat (limited to 'testing/opensmtpd-extras/0003-table-ldap-reconnect.patch')
-rw-r--r-- | testing/opensmtpd-extras/0003-table-ldap-reconnect.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/testing/opensmtpd-extras/0003-table-ldap-reconnect.patch b/testing/opensmtpd-extras/0003-table-ldap-reconnect.patch new file mode 100644 index 0000000000..985e766b9c --- /dev/null +++ b/testing/opensmtpd-extras/0003-table-ldap-reconnect.patch @@ -0,0 +1,54 @@ +From 04e4c521b34d1987af915ff97dcb0d87daf122b0 Mon Sep 17 00:00:00 2001 +From: ID Fake <idfake@gmx.net> +Date: Thu, 27 Jul 2017 23:55:12 +0200 +Subject: [PATCH] table-ldap reconnect + +Patch-Source: https://github.com/OpenSMTPD/OpenSMTPD-extras/commit/04e4c521b34d1987af915ff97dcb0d87daf122b0 + https://github.com/OpenSMTPD/OpenSMTPD-extras/commit/07764840916e4d0ca0925dcc8722dd20d8347e95 +--- + extras/tables/table-ldap/table_ldap.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/extras/tables/table-ldap/table_ldap.c b/extras/tables/table-ldap/table_ldap.c +index 5b54c86..5e9152f 100644 +--- a/extras/tables/table-ldap/table_ldap.c ++++ b/extras/tables/table-ldap/table_ldap.c +@@ -77,13 +77,22 @@ table_ldap_update(void) + static int + table_ldap_check(int service, struct dict *params, const char *key) + { ++ int ret; ++ + switch(service) { + case K_ALIAS: + case K_DOMAIN: + case K_CREDENTIALS: + case K_USERINFO: + case K_MAILADDR: +- return ldap_run_query(service, key, NULL, 0); ++ if ((ret = ldap_run_query(service, key, NULL, 0)) >= 0) { ++ return ret; ++ } ++ log_debug("debug: table-ldap: reconnecting"); ++ if (!(ret = ldap_open())) { ++ log_warnx("warn: table-ldap: failed to connect"); ++ } ++ return ret; + default: + return -1; + } +@@ -306,6 +315,11 @@ ldap_open(void) + { + struct aldap_message *amsg = NULL; + ++ if (aldap) { ++ aldap_close(aldap); ++ log_info("info: table-ldap: closed previous connection"); ++ } ++ + aldap = ldap_connect(url); + if (aldap == NULL) { + log_warnx("warn: ldap_connect error"); +-- +2.18.0 + |