Merge pull request #62 from Zentyal/ejhernandez/fix-space-temporal-crash-setChangeKey

Attempt to sync an UID in setChangeKey to avoid crashing
pull/69/head
Jesús García Sáez 2014-12-01 19:45:51 +01:00
commit bdf12e5c01
1 changed files with 13 additions and 2 deletions

View File

@ -757,7 +757,6 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
messageEntry = [messages objectForKey: messageUID];
if (!messageEntry)
{
[messages removeObjectForKey: messageUID];
changeNumber = [[self context] getNewChangeNumber];
fetchResults = [(NSDictionary *) [sogoObject fetchUIDs: [NSArray arrayWithObject: messageUID]
parts: [NSArray arrayWithObject: @"modseq"]]
@ -844,12 +843,24 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
{
NSMutableDictionary *messages, *messageEntry;
NSString *messageUid;
BOOL synced;
messageUid = [self messageUIDFromMessageKey: messageKey];
messages = [[versionsMessage properties] objectForKey: @"Messages"];
messageEntry = [messages objectForKey: messageUid];
if (!messageEntry)
abort ();
{
[self warnWithFormat: @"attempting to synchronise to set the change key for "
@"this message %@", messageKey];
synced = [self synchroniseCacheForUID: messageUid];
if (synced)
messageEntry = [[[versionsMessage properties] objectForKey: @"Messages"] objectForKey: messageUid];
if (!messageEntry)
{
[self errorWithFormat: @"still nothing. We crash!"];
abort ();
}
}
[self _setChangeKey: changeKey forMessageEntry: messageEntry];
[versionsMessage save];