return TRUE;
}
+static bool header_value_want_skip(const struct message_header_line *hdr)
+{
+ for (size_t i = 0; i < hdr->value_len; i++) {
+ if (hdr->value[i] != ' ' && hdr->value[i] != '\t')
+ return FALSE;
+ }
+ /* "header: \r\n \r\n" - Zimbra's BODY[HEADER] strips this line away. */
+ return TRUE;
+}
+
static void
pop3_header_filter_callback(struct header_filter_istream *input ATTR_UNUSED,
struct message_header_line *hdr,
here while others don't. To make sure they can be
matched correctly we want to stop here entirely. */
ctx->stop = TRUE;
+ } else if (hdr->continued && header_value_want_skip(hdr)) {
+ *matched = TRUE;
}
if (ctx->stop)
*matched = TRUE;
{ "a: b \r\n", "44ef6a20971148dd54a161f79814e22e2d098ddb", FALSE },
{ "a: b\r\n\r\n", "938b96404495cced816e3a4f6031734eab4e71b3", TRUE },
{ "a: b\r\n\r\r\n", "44ef6a20971148dd54a161f79814e22e2d098ddb", FALSE },
- { "a: b\r\n\r\r\nc: d\r\n\r\n", "44ef6a20971148dd54a161f79814e22e2d098ddb", TRUE }
+ { "a: b\r\n\r\r\nc: d\r\n\r\n", "44ef6a20971148dd54a161f79814e22e2d098ddb", TRUE },
+ { "a: b\r\n \r\n", "44ef6a20971148dd54a161f79814e22e2d098ddb", FALSE },
+ { "a: b\r\n \r\n", "44ef6a20971148dd54a161f79814e22e2d098ddb", FALSE },
+ { "a: b\r\n\t\r\n", "44ef6a20971148dd54a161f79814e22e2d098ddb", FALSE },
};
struct istream *input;
unsigned char digest[SHA1_RESULTLEN];