From: Stephan Bosch Date: Wed, 2 Sep 2020 09:15:33 +0000 (+0200) Subject: lib: event-log - Fix handling dropping parent prefixes beyond a drop at a higher... X-Git-Tag: 2.3.13~238 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=205b9fd9f4167a0c2b9dc4823b43efb65ca5b2d5;p=thirdparty%2Fdovecot%2Fcore.git lib: event-log - Fix handling dropping parent prefixes beyond a drop at a higher level. Before, the drop in the higher level became invisible to the lower hiererarchies. For example: parent1, parent2, parent3, parent4(drop one) yielded "parent1: parent2: parent4: " as a prefix (which is still OK), whereas parent1: parent2: parent3: parent4(drop one): leaf(drop 3) yielded "parent1: leaf: ", while the expected prefix would be: "leaf: ". This means that the drop of one prefix by parent4 is ignored. Instead it should apply that drop and operate on the prefixes that are still visible at the lowel level, so the number of prefixes dropped should be additive, which is what this commit changes. --- diff --git a/src/lib/event-log.c b/src/lib/event-log.c index 23755a8947..d62d0efd16 100644 --- a/src/lib/event-log.c +++ b/src/lib/event-log.c @@ -218,8 +218,7 @@ event_get_log_message(struct event *event, } } else if (!event->log_prefix_replace && (!params->no_send || !glmctx->str_out_done)) { - if (event->log_prefixes_dropped > prefixes_dropped) - prefixes_dropped = event->log_prefixes_dropped; + prefixes_dropped += event->log_prefixes_dropped; if (event_get_log_message(event->parent, glmctx, prefixes_dropped, fmt, args)) ret = TRUE; diff --git a/src/lib/test-event-log.c b/src/lib/test-event-log.c index acb755a45c..dc2e3dc023 100644 --- a/src/lib/test-event-log.c +++ b/src/lib/test-event-log.c @@ -2369,6 +2369,22 @@ static void test_event_log_message(void) "appended2.appended3.appended5.TEXT", .result_str_out = "appended2.appended3.appended5.TEXT", }, + { + .prefixes = (const struct test_log_event []) { + { TYPE_PREFIX_APPEND, "appended1,", 0 }, + { TYPE_PREFIX_APPEND, "appended2.", 0 }, + { TYPE_PREFIX_APPEND, "appended3.", + FLAG_DROP_PREFIXES_1 }, + { TYPE_PREFIX_APPEND, "appended4.", 0 }, + { TYPE_PREFIX_APPEND, "appended5.", + (FLAG_DROP_PREFIXES_1 | + FLAG_DROP_PREFIXES_2) }, + { .type = TYPE_END } + }, + .global_log_prefix = "global3.", + .result = "global3.Info: appended5.TEXT", + .result_str_out = "appended5.TEXT", + }, }; test_begin("event log message");