diff options
author | Paul B. Henson <henson@acm.org> | 2018-05-26 18:09:25 -0700 |
---|---|---|
committer | Paul B. Henson <henson@acm.org> | 2018-05-26 18:09:25 -0700 |
commit | a29785e9177f5801317fcb3db297cbdafa4f3d93 (patch) | |
tree | a1fa01760f20a10f88387fd19166786aa053140a | |
parent | Merge pull request #40 from jdelic/upstream-pr/uint8_t-needs-stdint.h (diff) | |
download | OpenSMTPD-extras-a29785e9177f5801317fcb3db297cbdafa4f3d93.tar.xz OpenSMTPD-extras-a29785e9177f5801317fcb3db297cbdafa4f3d93.zip |
Add ldap reconnection logic to lookup function; reorder a bit to avoid
implicit function declaration errors.
-rw-r--r-- | extras/tables/table-ldap/table_ldap.c | 88 |
1 files changed, 49 insertions, 39 deletions
diff --git a/extras/tables/table-ldap/table_ldap.c b/extras/tables/table-ldap/table_ldap.c index 88c9ffd..090cfb4 100644 --- a/extras/tables/table-ldap/table_ldap.c +++ b/extras/tables/table-ldap/table_ldap.c @@ -75,45 +75,6 @@ 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: - 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; - } -} - -static int -table_ldap_lookup(int service, struct dict *params, const char *key, char *dst, size_t sz) -{ - switch(service) { - case K_ALIAS: - case K_DOMAIN: - case K_CREDENTIALS: - case K_USERINFO: - case K_MAILADDR: - return ldap_run_query(service, key, dst, sz); - default: - return -1; - } -} - -static int table_ldap_fetch(int service, struct dict *params, char *dst, size_t sz) { return -1; @@ -362,6 +323,31 @@ err: } static int +table_ldap_lookup(int service, struct dict *params, const char *key, char *dst, size_t sz) +{ + int ret; + + switch(service) { + case K_ALIAS: + case K_DOMAIN: + case K_CREDENTIALS: + case K_USERINFO: + case K_MAILADDR: + if ((ret = ldap_run_query(service, key, dst, sz)) > 0) { + return ret; + } + log_debug("debug: table-ldap: reconnecting"); + if (!(ret = ldap_open())) { + log_warnx("warn: table-ldap: failed to connect"); + return ret; + } + return ldap_run_query(service, key, dst, sz); + default: + return -1; + } +} + +static int ldap_query(const char *filter, char **attributes, char ***outp, size_t n) { struct aldap_message *m = NULL; @@ -498,6 +484,30 @@ end: return ret; } +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: + 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; + } +} + int main(int argc, char **argv) { |