From: Timo Sirainen Date: Thu, 11 Sep 2014 13:40:00 +0000 (+0300) Subject: lib-mail: Message decoder now runs normalizer also for unknown charsets. X-Git-Tag: 2.2.14.rc1~78 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9514798ef5f1c015bcdeb2b80b2874e59f083ef3;p=thirdparty%2Fdovecot%2Fcore.git lib-mail: Message decoder now runs normalizer also for unknown charsets. --- diff --git a/src/lib-mail/message-decoder.c b/src/lib-mail/message-decoder.c index 9099a1a463..8742cc4542 100644 --- a/src/lib-mail/message-decoder.c +++ b/src/lib-mail/message-decoder.c @@ -334,7 +334,9 @@ static bool message_decode_body(struct message_decoder_context *ctx, if (ctx->binary_input) { output->data = data; output->size = size; - } else if (ctx->charset_utf8) { + } else if (ctx->charset_utf8 || ctx->charset_trans == NULL) { + /* handle unknown charsets the same as UTF-8. it might find + usable ASCII text. */ buffer_set_used_size(ctx->buf2, 0); if (ctx->normalizer != NULL) { (void)ctx->normalizer(data, size, ctx->buf2); @@ -347,16 +349,6 @@ static bool message_decode_body(struct message_decoder_context *ctx, output->data = ctx->buf2->data; output->size = ctx->buf2->used; } - } else if (ctx->charset_trans == NULL) { - /* unknown charset */ - buffer_set_used_size(ctx->buf2, 0); - if (uni_utf8_get_valid_data(data, size, ctx->buf2)) { - output->data = data; - output->size = size; - } else { - output->data = ctx->buf2->data; - output->size = ctx->buf2->used; - } } else { buffer_set_used_size(ctx->buf2, 0); if (ctx->translation_size != 0)