]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Fix filtering by event name in log_core_filter
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Sun, 27 May 2018 12:42:26 +0000 (15:42 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 28 May 2018 09:26:45 +0000 (09:26 +0000)
event->sending_name was already cleared by the time it was checked, so any
event:* filters never matched.

src/lib/event-log.c

index 7f4074e76dc943e67567fdab4c9ab05d67d78b2d..1c16216f3fd8e40f3113b130772d1fc657468cdc 100644 (file)
@@ -158,8 +158,15 @@ event_logv_type(struct event *event, enum log_type log_type,
        struct failure_context ctx = {
                .type = log_type,
        };
-
+       bool abort_after_event = FALSE;
        int old_errno = errno;
+
+       if (global_core_log_filter != NULL &&
+           event_filter_match_source(global_core_log_filter, event,
+                                     event->source_filename,
+                                     event->source_linenum, &ctx))
+               abort_after_event = TRUE;
+
        if (!event_get_log_prefix(event, log_prefix_str, &replace_prefix)) {
                /* keep log prefix as it is */
                event_vsend(event, &ctx, fmt, args);
@@ -172,10 +179,7 @@ event_logv_type(struct event *event, enum log_type log_type,
                str_vprintfa(log_prefix_str, fmt, args);
                event_send(event, &ctx, "%s", str_c(log_prefix_str));
        }
-       if (global_core_log_filter != NULL &&
-           event_filter_match_source(global_core_log_filter, event,
-                                     event->source_filename,
-                                     event->source_linenum, &ctx))
+       if (abort_after_event)
                abort();
        errno = old_errno;
 }