[evolution-ews/gnome-3-10] Bug #719376 - Filter by mailing list doesn't work



commit f56d4c52f15f0906fc3604943ae7ef2f9b3b4cc7
Author: Milan Crha <mcrha redhat com>
Date:   Tue Nov 26 21:12:10 2013 +0100

    Bug #719376 - Filter by mailing list doesn't work

 src/camel/camel-ews-folder.c |    3 ++-
 src/camel/camel-ews-utils.c  |   32 +++++++++++++++++++++++++++++---
 2 files changed, 31 insertions(+), 4 deletions(-)
---
diff --git a/src/camel/camel-ews-folder.c b/src/camel/camel-ews-folder.c
index e00fc59..add11d8 100644
--- a/src/camel/camel-ews-folder.c
+++ b/src/camel/camel-ews-folder.c
@@ -65,7 +65,8 @@ which needs to be better organized via functions */
 #define SUMMARY_FOLLOWUP_FLAGS " mapi:int:0x1090" /* PidTagFlagStatus */ \
                                " mapi:time:0x1091" /* PidTagFlagCompleteTime */ \
                                " mapi:dist:string:Common:0x8530" /* PidLidFlagRequest */ \
-                               " mapi:dist:time:Task:0x8105" /* PidLidTaskDueDate */
+                               " mapi:dist:time:Task:0x8105" /* PidLidTaskDueDate */ \
+                               " mapi:string:0x007D" /* PidTagTransportMessageHeaders */
 
 #define SUMMARY_ITEM_FLAGS "item:ResponseObjects item:Sensitivity item:Importance item:Categories" 
SUMMARY_FOLLOWUP_FLAGS
 #define ITEM_PROPS "item:Subject item:DateTimeReceived item:DateTimeSent item:DateTimeCreated item:Size " \
diff --git a/src/camel/camel-ews-utils.c b/src/camel/camel-ews-utils.c
index ee68dc3..f656da6 100644
--- a/src/camel/camel-ews-utils.c
+++ b/src/camel/camel-ews-utils.c
@@ -793,7 +793,8 @@ camel_ews_utils_sync_created_items (CamelEwsFolder *ews_folder,
                const EwsMailbox *from;
                EEwsItemType item_type;
                const GSList *to, *cc;
-               gboolean has_attachments;
+               const gchar *msg_headers;
+               gboolean has_attachments, found_property;
                guint32 server_flags;
 
                if (!item)
@@ -813,8 +814,33 @@ camel_ews_utils_sync_created_items (CamelEwsFolder *ews_folder,
                        continue;
                }
 
-               mi = (CamelEwsMessageInfo *)
-                       camel_message_info_new (folder->summary);
+
+               /* PidTagTransportMessageHeaders */
+               found_property = FALSE;
+               msg_headers = e_ews_item_get_extended_property_as_string (item, NULL, 0x007D, 
&found_property);
+               if (!found_property)
+                       msg_headers = NULL;
+
+               if (msg_headers && *msg_headers) {
+                       CamelMimePart *part = camel_mime_part_new ();
+                       CamelStream *stream;
+                       CamelMimeParser *parser;
+
+                       stream = camel_stream_mem_new_with_buffer (msg_headers, strlen (msg_headers));
+                       parser = camel_mime_parser_new ();
+                       camel_mime_parser_init_with_stream (parser, stream, NULL);
+                       camel_mime_parser_scan_from (parser, FALSE);
+                       g_object_unref (stream);
+
+                       if (camel_mime_part_construct_from_parser_sync (part, parser, NULL, NULL))
+                               mi = (CamelEwsMessageInfo *) camel_folder_summary_info_new_from_header 
(folder->summary, part->headers);
+
+                       g_object_unref (parser);
+                       g_object_unref (part);
+               }
+
+               if (!mi)
+                       mi = (CamelEwsMessageInfo *) camel_message_info_new (folder->summary);
 
                if (mi->info.content == NULL) {
                        mi->info.content =


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]