From 1c1a75d2c16b5b331c90695f8bee31f1d3ccfd00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20J=2E=20Hern=C3=A1ndez=20Blasco?= Date: Fri, 13 Mar 2015 09:34:21 +0100 Subject: [PATCH] oc-mail: Use body.peek to preload message bodies In this way, we do not modify the flags (\Seen) on preloading. The IMAP server returns the content without .peek section so it is removed. This also performs the modification intended by the following Pull Request: https://github.com/Zentyal/sogo/pull/50 That tried to avoid set \Seen flag when preloading message bodies on synchronisation. But in this case we are not incrementing the modseq as we are not modifying any messages flags. --- NEWS | 1 + OpenChange/MAPIStoreMailFolder.m | 9 +++++++++ OpenChange/MAPIStoreMailMessage.m | 6 +----- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index bae4a7cd6..e05997040 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ master ------ Enhancements + - Improve sync speed from Outlook by non-reprocessing already downloaded unread mails - Give support to calendar sharing invitations - Missing contact fields are now saved and available when sharing it (Office, Profession, Manager's name, Assistant's name, Spouse/Partner, Anniversary) diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index 43f8e4d25..78471e49c 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -1500,6 +1500,15 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) { [bodyPartKeys addObject: bodyPartKey]; messageUid = [self messageUIDFromMessageKey: messageKey]; + /* If the bodyPartKey include peek, remove it as it is not returned + as key in the IMAP server response. + + IMAP conversation example: + a4 UID FETCH 1 (UID BODY.PEEK[text]) + * 1 FETCH (UID 1 BODY[TEXT] {1677} + */ + bodyPartKey = [bodyPartKey stringByReplacingOccurrencesOfString: @"body.peek" + withString: @"body"]; [keyAssoc setObject: bodyPartKey forKey: messageUid]; } } diff --git a/OpenChange/MAPIStoreMailMessage.m b/OpenChange/MAPIStoreMailMessage.m index b5caf3355..8c35f4265 100644 --- a/OpenChange/MAPIStoreMailMessage.m +++ b/OpenChange/MAPIStoreMailMessage.m @@ -1627,11 +1627,7 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) if (!headerSetup) [self _fetchHeaderData]; - if ([mimeKey hasPrefix: @"body.peek"]) - bodyPartKey = [NSString stringWithFormat: @"body[%@]", - [mimeKey _strippedBodyKey]]; - else - bodyPartKey = mimeKey; + bodyPartKey = mimeKey; return bodyPartKey; }