]> granicus.if.org Git - libevent/commitdiff
Actually use the log facility for reporting evdns problems.
authorNick Mathewson <nickm@torproject.org>
Wed, 29 May 2013 20:26:50 +0000 (16:26 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 29 May 2013 20:26:50 +0000 (16:26 -0400)
Fixes issue #63.  Also refactors the evdns logging and log backend a
bit, so that it wastes a little less code.

evdns.c
log-internal.h
log.c
test/regress_dns.c

diff --git a/evdns.c b/evdns.c
index 7e667f8209e956008a0f9bd1129927ae7d7581bc..66a3bff3b8b3fb0f38d662db85384b0f91a06b6c 100644 (file)
--- a/evdns.c
+++ b/evdns.c
 #include <netinet/in6.h>
 #endif
 
-#define EVDNS_LOG_DEBUG 0
-#define EVDNS_LOG_WARN 1
-#define EVDNS_LOG_MSG 2
+#define EVDNS_LOG_DEBUG EVENT_LOG_DEBUG
+#define EVDNS_LOG_WARN EVENT_LOG_WARN
+#define EVDNS_LOG_MSG EVENT_LOG_MSG
 
 #ifndef HOST_NAME_MAX
 #define HOST_NAME_MAX 255
@@ -432,17 +432,6 @@ static int strtoint(const char *const str);
        EVLOCK_ASSERT_LOCKED((base)->lock)
 #endif
 
-static void
-default_evdns_log_fn(int warning, const char *buf)
-{
-       if (warning == EVDNS_LOG_WARN)
-               event_warnx("[evdns] %s", buf);
-       else if (warning == EVDNS_LOG_MSG)
-               event_msgx("[evdns] %s", buf);
-       else
-               event_debug(("[evdns] %s", buf));
-}
-
 static evdns_debug_log_fn_type evdns_log_fn = NULL;
 
 void
@@ -457,25 +446,21 @@ evdns_set_log_fn(evdns_debug_log_fn_type fn)
 #define EVDNS_LOG_CHECK
 #endif
 
-static void evdns_log_(int warn, const char *fmt, ...) EVDNS_LOG_CHECK;
+static void evdns_log_(int severity, const char *fmt, ...) EVDNS_LOG_CHECK;
 static void
-evdns_log_(int warn, const char *fmt, ...)
+evdns_log_(int severity, const char *fmt, ...)
 {
        va_list args;
-       char buf[512];
-       if (!evdns_log_fn)
-               return;
        va_start(args,fmt);
-       evutil_vsnprintf(buf, sizeof(buf), fmt, args);
-       va_end(args);
        if (evdns_log_fn) {
-               if (warn == EVDNS_LOG_MSG)
-                       warn = EVDNS_LOG_WARN;
-               evdns_log_fn(warn, buf);
+               char buf[512];
+               int is_warn = (severity == EVDNS_LOG_WARN);
+               evutil_vsnprintf(buf, sizeof(buf), fmt, args);
+               evdns_log_fn(is_warn, buf);
        } else {
-               default_evdns_log_fn(warn, buf);
+               event_logv_(severity, NULL, fmt, args);
        }
-
+       va_end(args);
 }
 
 #define log evdns_log_
index da4cd73ab15723d24c6148caeb469535f96147e7..330478a9edd60ed1bfbd4bb5fa76d92a01149cfa 100644 (file)
@@ -65,6 +65,9 @@ void event_warnx(const char *fmt, ...) EV_CHECK_FMT(1,2);
 void event_msgx(const char *fmt, ...) EV_CHECK_FMT(1,2);
 void event_debugx_(const char *fmt, ...) EV_CHECK_FMT(1,2);
 
+void event_logv_(int severity, const char *errstr, const char *fmt, va_list ap)
+       EV_CHECK_FMT(3,0);
+
 #ifdef EVENT_DEBUG_LOGGING_ENABLED
 #define event_debug(x) do {                    \
        if (event_debug_get_logging_mask_()) {  \
diff --git a/log.c b/log.c
index ded3fec3dab123b6a5c9f36631ce2ecd63d09e23..e8ae9fdc310e0fb13b75ff778ecae21014cf6578 100644 (file)
--- a/log.c
+++ b/log.c
@@ -57,8 +57,6 @@
 
 #include "log-internal.h"
 
-static void warn_helper_(int severity, const char *errstr, const char *fmt,
-    va_list ap);
 static void event_log(int severity, const char *msg);
 static void event_exit(int errcode) EV_NORETURN;
 
@@ -115,7 +113,7 @@ event_err(int eval, const char *fmt, ...)
        va_list ap;
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_ERR, strerror(errno), fmt, ap);
+       event_logv_(EVENT_LOG_ERR, strerror(errno), fmt, ap);
        va_end(ap);
        event_exit(eval);
 }
@@ -126,7 +124,7 @@ event_warn(const char *fmt, ...)
        va_list ap;
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_WARN, strerror(errno), fmt, ap);
+       event_logv_(EVENT_LOG_WARN, strerror(errno), fmt, ap);
        va_end(ap);
 }
 
@@ -137,7 +135,7 @@ event_sock_err(int eval, evutil_socket_t sock, const char *fmt, ...)
        int err = evutil_socket_geterror(sock);
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_ERR, evutil_socket_error_to_string(err), fmt, ap);
+       event_logv_(EVENT_LOG_ERR, evutil_socket_error_to_string(err), fmt, ap);
        va_end(ap);
        event_exit(eval);
 }
@@ -149,7 +147,7 @@ event_sock_warn(evutil_socket_t sock, const char *fmt, ...)
        int err = evutil_socket_geterror(sock);
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_WARN, evutil_socket_error_to_string(err), fmt, ap);
+       event_logv_(EVENT_LOG_WARN, evutil_socket_error_to_string(err), fmt, ap);
        va_end(ap);
 }
 
@@ -159,7 +157,7 @@ event_errx(int eval, const char *fmt, ...)
        va_list ap;
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_ERR, NULL, fmt, ap);
+       event_logv_(EVENT_LOG_ERR, NULL, fmt, ap);
        va_end(ap);
        event_exit(eval);
 }
@@ -170,7 +168,7 @@ event_warnx(const char *fmt, ...)
        va_list ap;
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_WARN, NULL, fmt, ap);
+       event_logv_(EVENT_LOG_WARN, NULL, fmt, ap);
        va_end(ap);
 }
 
@@ -180,7 +178,7 @@ event_msgx(const char *fmt, ...)
        va_list ap;
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_MSG, NULL, fmt, ap);
+       event_logv_(EVENT_LOG_MSG, NULL, fmt, ap);
        va_end(ap);
 }
 
@@ -190,16 +188,19 @@ event_debugx_(const char *fmt, ...)
        va_list ap;
 
        va_start(ap, fmt);
-       warn_helper_(EVENT_LOG_DEBUG, NULL, fmt, ap);
+       event_logv_(EVENT_LOG_DEBUG, NULL, fmt, ap);
        va_end(ap);
 }
 
-static void
-warn_helper_(int severity, const char *errstr, const char *fmt, va_list ap)
+void
+event_logv_(int severity, const char *errstr, const char *fmt, va_list ap)
 {
        char buf[1024];
        size_t len;
 
+       if (severity == EVENT_LOG_DEBUG && !event_debug_get_logging_mask_())
+               return;
+
        if (fmt != NULL)
                evutil_vsnprintf(buf, sizeof(buf), fmt, ap);
        else
index 7bf5fa707bc995683de30fa92f9b1285a3ecc12d..79daf903cd62a34d82bd6eb2fa6a5e562c7b8f74 100644 (file)
@@ -1892,8 +1892,8 @@ struct testcase_t dns_testcases[] = {
        { "search", dns_search_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
        { "search_cancel", dns_search_cancel_test,
          TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
-       { "retry", dns_retry_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
-       { "reissue", dns_reissue_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
+       { "retry", dns_retry_test, TT_FORK|TT_NEED_BASE|TT_NO_LOGS, &basic_setup, NULL },
+       { "reissue", dns_reissue_test, TT_FORK|TT_NEED_BASE|TT_NO_LOGS, &basic_setup, NULL },
        { "inflight", dns_inflight_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
        { "bufferevent_connect_hostname", test_bufferevent_connect_hostname,
          TT_FORK|TT_NEED_BASE, &basic_setup, NULL },