From: Stephan Bosch Date: Thu, 16 Jan 2020 23:36:54 +0000 (+0100) Subject: lib: event-log.c - Ensure checks for enabling debug logging are always run. X-Git-Tag: 2.3.10~120 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6b0cbb11936cc194ffd55391c5f11b6bd47a518;p=thirdparty%2Fdovecot%2Fcore.git lib: event-log.c - Ensure checks for enabling debug logging are always run. --- diff --git a/src/lib/event-log.c b/src/lib/event-log.c index 396d13b930..23755a8947 100644 --- a/src/lib/event-log.c +++ b/src/lib/event-log.c @@ -247,6 +247,10 @@ bool event_want_log_level(struct event *event, enum log_type level, if (event->min_log_level <= level) return TRUE; + if (event->debug_level_checked) + return event->sending_debug_log; + event->debug_level_checked = TRUE; + if (event->forced_debug) event->sending_debug_log = TRUE; @@ -355,6 +359,10 @@ void event_logv(struct event *event, const struct event_log_params *params, params->source_linenum, TRUE); } + (void)event_want_log_level(event, params->log_type, + event->source_filename, + event->source_linenum); + event_ref(event); event_logv_params(event, params, fmt, args); event_set_source(event, orig_source_filename, @@ -366,12 +374,14 @@ struct event *event_set_forced_debug(struct event *event, bool force) { if (force) event->forced_debug = TRUE; + event->debug_level_checked = FALSE; return event; } struct event *event_unset_forced_debug(struct event *event) { event->forced_debug = FALSE; + event->debug_level_checked = FALSE; return event; } diff --git a/src/lib/lib-event-private.h b/src/lib/lib-event-private.h index 9fb9753e86..691ac74181 100644 --- a/src/lib/lib-event-private.h +++ b/src/lib/lib-event-private.h @@ -31,6 +31,7 @@ struct event { bool always_log_source:1; bool sending_debug_log:1; bool id_sent_to_stats:1; + bool debug_level_checked:1; /* Fields that are exported & imported: */ struct timeval tv_created_ioloop; diff --git a/src/lib/lib-event.c b/src/lib/lib-event.c index 5428fc3190..61f1d00083 100644 --- a/src/lib/lib-event.c +++ b/src/lib/lib-event.c @@ -583,6 +583,7 @@ struct event *event_set_always_log_source(struct event *event) struct event *event_set_min_log_level(struct event *event, enum log_type level) { event->min_log_level = level; + event->debug_level_checked = FALSE; return event; } @@ -757,6 +758,7 @@ event_add_categories(struct event *event, if (!event_find_category(event, categories[i])) array_push_back(&event->categories, &representative); } + event->debug_level_checked = FALSE; return event; }