static bool
event_match_field(struct event *event, struct event_filter_node *node,
- bool use_strcmp)
+ bool use_strcmp, const char *source_filename,
+ unsigned int source_linenum)
{
const struct event_field *field;
struct event_field duration;
/* Use i_warning to prevent event filter recursions. */
i_warning("Event filter matches integer field "
"'%s' against non-integer value '%s'. "
- "(event=%s)",
+ "(event=%s, source=%s:%u)",
wanted_field->key,
wanted_field->value.str,
- name != NULL ? name : "");
+ name != NULL ? name : "",
+ source_filename, source_linenum);
node->warned_type_mismatch = TRUE;
}
return FALSE;
case EVENT_FILTER_NODE_TYPE_EVENT_CATEGORY:
return event_has_category(event, node, log_type);
case EVENT_FILTER_NODE_TYPE_EVENT_FIELD_EXACT:
- return event_match_field(event, node, TRUE);
+ return event_match_field(event, node, TRUE, source_filename, source_linenum);
case EVENT_FILTER_NODE_TYPE_EVENT_FIELD_WILDCARD:
case EVENT_FILTER_NODE_TYPE_EVENT_FIELD_NUMERIC_WILDCARD:
- return event_match_field(event, node, FALSE);
+ return event_match_field(event, node, FALSE, source_filename, source_linenum);
}
i_unreached();