From 1e51850d6eeab5c1683f9b0db2a81136c6d9c7ef Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 05:56:32 +0000 Subject: [PATCH] Monotone-Parent: 14df382f39f38461d724751dad6ea4e1e8ee57c7 Monotone-Revision: f192e1f1ce3ef4fc536470409d175d3bc7cb4bad Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T05:56:32 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ OpenChange/MAPIStoreGCSMessage.m | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3daeb5160..adc55a73b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2012-03-12 Wolfgang Sourdeau + * OpenChange/MAPIStoreGCSMessage.m + (-getPidTagPredecessorChangeList:inMemCtx:): when the list is + missing, request a synchronisation from the container as the + message might now have been synchronised yet... + * OpenChange/MAPIStoreTypes.m (MAPICNCompare): new function that returns an NSComparisonResult for two change numbers (reverse format). diff --git a/OpenChange/MAPIStoreGCSMessage.m b/OpenChange/MAPIStoreGCSMessage.m index 78fe155f5..4d7ea0c07 100644 --- a/OpenChange/MAPIStoreGCSMessage.m +++ b/OpenChange/MAPIStoreGCSMessage.m @@ -150,13 +150,21 @@ { int rc = MAPISTORE_SUCCESS; NSData *changeList; + MAPIStoreGCSFolder *parentFolder; if (isNew) rc = MAPISTORE_ERR_NOT_FOUND; else { - changeList = [(MAPIStoreGCSFolder *)[self container] - predecessorChangeListForMessageWithKey: [self nameInContainer]]; + parentFolder = (MAPIStoreGCSFolder *)[self container]; + changeList = [parentFolder + predecessorChangeListForMessageWithKey: [self nameInContainer]]; + if (!changeList) + { + [parentFolder synchroniseCache]; + changeList = [parentFolder + predecessorChangeListForMessageWithKey: [self nameInContainer]]; + } if (!changeList) abort (); *data = [changeList asBinaryInMemCtx: memCtx];