diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-03-26 15:57:12 +0300 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-03-26 15:57:12 +0300 |
commit | f944fabe353afc4eb868629b988ceb5e64ea743b (patch) | |
tree | 6273100b9d526e81529d93b4ab6d471105332752 /src/message.c | |
parent | 4bcd83f0bb459e31ccbc8e0bd3f89705b1393632 (diff) | |
download | rspamd-f944fabe353afc4eb868629b988ceb5e64ea743b.tar.gz rspamd-f944fabe353afc4eb868629b988ceb5e64ea743b.zip |
* Do not try to process empty parts
Diffstat (limited to 'src/message.c')
-rw-r--r-- | src/message.c | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/src/message.c b/src/message.c index cff22599b..c2dea3ff4 100644 --- a/src/message.c +++ b/src/message.c @@ -308,27 +308,30 @@ mime_foreach_callback (GMimeObject *part, gpointer user_data) mime_part->content = part_content; msg_debug ("mime_foreach_callback: found part with content-type: %s/%s", type->type, type->subtype); task->parts = g_list_prepend (task->parts, mime_part); - /* Now do special processing for text parts of message */ - if (g_mime_content_type_is_type (type, "text", "html") || g_mime_content_type_is_type (type, "text", "xhtml")) { - msg_debug ("mime_foreach_callback: got urls from text/html part"); - url_parse_html (task, part_content); - - text_part = memory_pool_alloc (task->task_pool, sizeof (struct mime_text_part)); - text_part->content = strip_html_tags (part_content, NULL); - text_part->is_html = TRUE; - text_part->fuzzy = fuzzy_init_byte_array (text_part->content, task->task_pool); - memory_pool_add_destructor (task->task_pool, (pool_destruct_func)free_byte_array_callback, text_part->content); - task->text_parts = g_list_prepend (task->text_parts, text_part); - } - else if (g_mime_content_type_is_type (type, "text", "plain")) { - msg_debug ("mime_foreach_callback: got urls from text/plain part"); - url_parse_text (task, part_content); - - text_part = memory_pool_alloc (task->task_pool, sizeof (struct mime_text_part)); - text_part->content = part_content; - text_part->is_html = FALSE; - text_part->fuzzy = fuzzy_init_byte_array (text_part->content, task->task_pool); - task->text_parts = g_list_prepend (task->text_parts, text_part); + /* Skip empty parts */ + if (part_content->len > 0) { + /* Now do special processing for text parts of message */ + if (g_mime_content_type_is_type (type, "text", "html") || g_mime_content_type_is_type (type, "text", "xhtml")) { + msg_debug ("mime_foreach_callback: got urls from text/html part"); + url_parse_html (task, part_content); + + text_part = memory_pool_alloc (task->task_pool, sizeof (struct mime_text_part)); + text_part->content = strip_html_tags (part_content, NULL); + text_part->is_html = TRUE; + text_part->fuzzy = fuzzy_init_byte_array (text_part->content, task->task_pool); + memory_pool_add_destructor (task->task_pool, (pool_destruct_func)free_byte_array_callback, text_part->content); + task->text_parts = g_list_prepend (task->text_parts, text_part); + } + else if (g_mime_content_type_is_type (type, "text", "plain")) { + msg_debug ("mime_foreach_callback: got urls from text/plain part"); + url_parse_text (task, part_content); + + text_part = memory_pool_alloc (task->task_pool, sizeof (struct mime_text_part)); + text_part->content = part_content; + text_part->is_html = FALSE; + text_part->fuzzy = fuzzy_init_byte_array (text_part->content, task->task_pool); + task->text_parts = g_list_prepend (task->text_parts, text_part); + } } } else { |