optimized. */
FTS_BACKEND_FLAG_SUBSTRING_LOOKUPS = 0x01,
/* Backend supports virtual mailbox lookups. */
- FTS_BACKEND_FLAG_VIRTUAL_LOOKUPS = 0x02
+ FTS_BACKEND_FLAG_VIRTUAL_LOOKUPS = 0x02,
+ /* Backend supports indexing binary MIME parts */
+ FTS_BACKEND_FLAG_BINARY_MIME_PARTS = 0x04
};
struct fts_backend {
static int fts_build_mail(struct fts_storage_build_context *ctx, uint32_t uid)
{
+ enum message_decoder_flags decoder_flags = MESSAGE_DECODER_FLAG_DTCASE;
struct istream *input;
struct message_parser_ctx *parser;
struct message_decoder_context *decoder;
parser = message_parser_init(pool_datastack_create(), input,
MESSAGE_HEADER_PARSER_FLAG_CLEAN_ONELINE,
0);
- decoder = message_decoder_init(MESSAGE_DECODER_FLAG_DTCASE |
- MESSAGE_DECODER_FLAG_RETURN_BINARY);
+
+
+ if ((ctx->build->backend->flags & FTS_BACKEND_FLAG_BINARY_MIME_PARTS) != 0)
+ decoder_flags |= MESSAGE_DECODER_FLAG_RETURN_BINARY;
+ decoder = message_decoder_init(decoder_flags);
for (;;) {
ret = message_parser_parse_next_block(parser, &raw_block);
i_assert(ret != 0);