}
const char *
-rspamd_mime_charset_find_by_content (const gchar *in, gsize inlen)
+rspamd_mime_charset_find_by_content (const gchar *in, gsize inlen,
+ bool check_utf8)
{
int nconsumed;
bool is_reliable;
const gchar *ced_name;
- if (rspamd_fast_utf8_validate (in, inlen) == 0) {
- return UTF8_CHARSET;
+ if (check_utf8) {
+ if (rspamd_fast_utf8_validate (in, inlen) == 0) {
+ return UTF8_CHARSET;
+ }
}
if (content_check) {
if (rspamd_fast_utf8_validate (in, len) != 0) {
real_charset = rspamd_mime_charset_find_by_content (in,
- MIN (RSPAMD_CHARSET_MAX_CONTENT, len));
+ MIN (RSPAMD_CHARSET_MAX_CONTENT, len), FALSE);
if (real_charset) {
if (part->ct->charset.len == 0) {
if (need_charset_heuristic) {
charset = rspamd_mime_charset_find_by_content (part_content->data,
- MIN (RSPAMD_CHARSET_MAX_CONTENT, part_content->len));
+ MIN (RSPAMD_CHARSET_MAX_CONTENT, part_content->len), FALSE);
if (charset != NULL) {
msg_info_task ("detected charset %s", charset);
/* We don't know the real charset but can try heuristic */
if (need_charset_heuristic) {
charset = rspamd_mime_charset_find_by_content (part_content->data,
- MIN (RSPAMD_CHARSET_MAX_CONTENT, part_content->len));
+ MIN (RSPAMD_CHARSET_MAX_CONTENT, part_content->len), FALSE);
msg_info_task ("detected charset: %s", charset);
checked = TRUE;
text_part->real_charset = charset;