log_metav(LOG_INFO, NULL, 0, NULL, f, ap);
REENABLE_WARNING;
}
+
+#ifdef HAVE_GNUTLS
+
+static int log_level_map[] = {
+ LOG_DEBUG,
+ LOG_WARNING, /* gnutls session audit */
+ LOG_DEBUG, /* gnutls debug log */
+ LOG_WARNING, /* gnutls assert log */
+ LOG_INFO, /* gnutls handshake log */
+ LOG_DEBUG, /* gnutls record log */
+ LOG_DEBUG, /* gnutls dtls log */
+ LOG_DEBUG,
+ LOG_DEBUG,
+ LOG_DEBUG,
+ LOG_DEBUG, /* gnutls hard log */
+ LOG_DEBUG, /* gnutls read log */
+ LOG_DEBUG, /* gnutls write log */
+ LOG_DEBUG, /* gnutls io log */
+ LOG_DEBUG, /* gnutls buffers log */
+};
+
+void log_func_gnutls(int level, const char *message) {
+ int ourlevel;
+
+ assert_se(message);
+
+ if (0 <= level && level < (int) ELEMENTSOF(log_level_map))
+ ourlevel = log_level_map[level];
+ else
+ level = LOG_DEBUG;
+
+ log_meta(ourlevel, NULL, 0, NULL, "gnutls: %s", message);
+}
+
+#endif
#include "macro.h"
void microhttpd_logger(void *arg, const char *fmt, va_list ap) _printf_(2, 0);
+
+#ifdef HAVE_GNUTLS
+#include <gnutls/gnutls.h>
+
+void log_func_gnutls(int level, const char *message);
+
+/* This is additionally filtered by our internal log level, so it
+ * should be set fairly high to capture all potentially interesting
+ * events without overwhelming detail.
+ */
+#define GNUTLS_LOG_LEVEL 6
+#endif