From a36a3e4c838275d33b2ed087b037ed3708b04749 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 12 Jun 2009 14:50:46 +0200 Subject: [PATCH] Add debugging facility to tldap, analogous to tevent --- source3/include/tldap.h | 15 +++++++++++++++ source3/lib/tldap.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/source3/include/tldap.h b/source3/include/tldap.h index c79a142654e..d57484c5f81 100644 --- a/source3/include/tldap.h +++ b/source3/include/tldap.h @@ -145,6 +145,21 @@ const char *tldap_ctx_diagnosticmessage(struct tldap_context *ctx); const char *tldap_ctx_referral(struct tldap_context *ctx); const char *tldap_err2string(int rc); +/* DEBUG */ +enum tldap_debug_level { + TLDAP_DEBUG_FATAL, + TLDAP_DEBUG_ERROR, + TLDAP_DEBUG_WARNING, + TLDAP_DEBUG_TRACE +}; + +void tldap_set_debug(struct tldap_context *ld, + void (*log_fn)(void *log_private, + enum tldap_debug_level level, + const char *fmt, + va_list ap) PRINTF_ATTRIBUTE(3,0), + void *log_private); + /* * "+ 0x60" is from ASN1_APPLICATION */ diff --git a/source3/lib/tldap.c b/source3/lib/tldap.c index df86f95e2c7..c823f88d044 100644 --- a/source3/lib/tldap.c +++ b/source3/lib/tldap.c @@ -59,6 +59,11 @@ struct tldap_context { char *res_matcheddn; char *res_diagnosticmessage; char *res_referral; + + /* debug */ + void (*log_fn)(void *context, enum tldap_debug_level level, + const char *fmt, va_list ap); + void *log_private; }; struct tldap_message { @@ -72,6 +77,33 @@ struct tldap_message { struct tldap_attribute *attribs; }; +void tldap_set_debug(struct tldap_context *ld, + void (*log_fn)(void *log_private, + enum tldap_debug_level level, + const char *fmt, + va_list ap) PRINTF_ATTRIBUTE(3,0), + void *log_private) +{ + ld->log_fn = log_fn; + ld->log_private = log_private; +} + +static void tldap_debug(struct tldap_context *ld, + enum tldap_debug_level level, + const char *fmt, ...) +{ + va_list ap; + if (!ld) { + return; + } + if (ld->log_fn == NULL) { + return; + } + va_start(ap, fmt); + ld->log_fn(ld->log_private, level, fmt, ap); + va_end(ap); +} + static int tldap_next_msgid(struct tldap_context *ld) { int result; -- 2.11.4.GIT