From: Timo Sirainen Date: Sun, 10 May 2015 09:05:06 +0000 (+0300) Subject: fts: Fixed crash when not using lib-fts X-Git-Tag: 2.2.17.rc2~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9bee6caa05bcdb38a631d56708792ff79768a0bb;p=thirdparty%2Fdovecot%2Fcore.git fts: Fixed crash when not using lib-fts --- diff --git a/src/plugins/fts/fts-build-mail.c b/src/plugins/fts/fts-build-mail.c index 08c849c8cf..9d379c8b94 100644 --- a/src/plugins/fts/fts-build-mail.c +++ b/src/plugins/fts/fts-build-mail.c @@ -133,6 +133,23 @@ static bool data_has_8bit(const unsigned char *data, size_t size) return FALSE; } +static void +fts_build_tokenized_hdr_update_lang(struct fts_mail_build_context *ctx, + const struct message_header_line *hdr) +{ + /* Headers that don't contain any human language will only be + translated to lowercase - no stemming or other filtering. There's + unfortunately no pefect way of detecting which headers contain + human languages, so we have a list of some hardcoded header names + and we'll also assume that if there's any 8bit content it's a human + language. */ + if (header_has_language(hdr->name) || + data_has_8bit(hdr->full_value, hdr->full_value_len)) + ctx->cur_user_lang = NULL; + else + ctx->cur_user_lang = fts_user_get_data_lang(ctx->update_ctx->backend->ns->user); +} + static void fts_build_mail_header(struct fts_mail_build_context *ctx, const struct message_block *block) { @@ -151,17 +168,9 @@ static void fts_build_mail_header(struct fts_mail_build_context *ctx, key.part = block->part; key.hdr_name = hdr->name; - /* Headers that don't contain any human language will only be - translated to lowercase - no stemming or other filtering. There's - unfortunately no pefect way of detecting which headers contain - human languages, so we have a list of some hardcoded header names - and we'll also assume that if there's any 8bit content it's a human - language. */ - if (header_has_language(key.hdr_name) || - data_has_8bit(hdr->full_value, hdr->full_value_len)) - ctx->cur_user_lang = NULL; - else - ctx->cur_user_lang = fts_user_get_data_lang(ctx->update_ctx->backend->ns->user); + if ((ctx->update_ctx->backend->flags & + FTS_BACKEND_FLAG_TOKENIZED_INPUT) != 0) + fts_build_tokenized_hdr_update_lang(ctx, hdr); if (!fts_backend_update_set_build_key(ctx->update_ctx, &key)) return;