mstream->context);
if (matched != orig_matched &&
!mstream->headers_edited) {
- i_array_init(&mstream->match_change_lines, 8);
+ if (!array_is_created(&mstream->match_change_lines))
+ i_array_init(&mstream->match_change_lines, 8);
array_append(&mstream->match_change_lines,
&mstream->cur_line, 1);
}
struct message_header_line *hdr,
bool *matched, void *context ATTR_UNUSED)
{
- if (hdr != NULL && hdr->name_offset == 0) {
- /* drop first header */
+ if (hdr != NULL && (hdr->name_offset == 0 ||
+ strcmp(hdr->name, "X-Drop") == 0)) {
+ /* drop 1) first header, 2) X-Drop header */
*matched = TRUE;
}
}
static void test_istream_filter(void)
{
- static const char *exclude_headers[] = { "Subject", "To", NULL };
- const char *input = "From: foo\nFrom: abc\nTo: bar\nSubject: plop\n\nhello world\n";
+ static const char *exclude_headers[] = { "Subject", "To", "X-Drop", NULL };
+ const char *input = "From: foo\nFrom: abc\nTo: bar\nSubject: plop\nX-Drop: 1\n\nhello world\n";
const char *output = "From: abc\n\nhello world\n";
struct istream *istream, *filter, *filter2;
unsigned int i, input_len = strlen(input);