Mercurial > dovecot > core-2.2
changeset 11614:6fca3a8622f8 HEAD
fts: Give binary MIME part data only to FTS backends that support it.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 22 Jun 2010 21:38:18 +0100 |
parents | 86665b63c70b |
children | 7ad62742116d |
files | src/plugins/fts/fts-api-private.h src/plugins/fts/fts-storage.c |
diffstat | 2 files changed, 9 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts/fts-api-private.h Tue Jun 22 21:14:22 2010 +0100 +++ b/src/plugins/fts/fts-api-private.h Tue Jun 22 21:38:18 2010 +0100 @@ -50,7 +50,9 @@ 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 {
--- a/src/plugins/fts/fts-storage.c Tue Jun 22 21:14:22 2010 +0100 +++ b/src/plugins/fts/fts-storage.c Tue Jun 22 21:38:18 2010 +0100 @@ -143,6 +143,7 @@ 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; @@ -160,8 +161,11 @@ 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);