From ecd08fd79b748a7ff094e9cdba13e2fc9bdd2da1 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 14 Oct 2011 13:32:10 +0000 Subject: [PATCH 1/2] See ChangeLog Monotone-Parent: fa2e7098c9457bb1b9933f49556578b5326860d2 Monotone-Revision: 5be507aec21eb7c99a5024135035b80901450a40 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2011-10-14T13:32:10 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ SoObjects/SOGo/SOGoGCSFolder.m | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ad844fe5..e689671cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-10-14 Ludovic Marcotte + + * SoObjects/SOGo/SOGoGCSFolder.m (setRoles:forUser:..) + We now even cache "None" roles. + 2011-10-13 Francis Lachapelle * Tools/SOGoToolUserPreferences.m (-run): added possibility to diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index e2025710f..96bb3890f 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -1637,11 +1637,13 @@ static NSArray *childRecordFields = nil; [newRoles removeObject: SOGoRole_AuthorizedSubscriber]; [newRoles removeObject: SOGoRole_None]; objectPath = [objectPathArray componentsJoinedByString: @"/"]; - [self _cacheRoles: newRoles forUser: uid - forObjectAtPath: objectPath]; + if (![newRoles count]) [newRoles addObject: SOGoRole_None]; + [self _cacheRoles: newRoles forUser: uid + forObjectAtPath: objectPath]; + [self _commitRoles: newRoles forUID: aUID forObject: objectPath]; } From 185f62de12e814a53454e407b8e122abc0b538af Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 14 Oct 2011 16:32:30 +0000 Subject: [PATCH 2/2] See ChangeLog Monotone-Parent: 5be507aec21eb7c99a5024135035b80901450a40 Monotone-Revision: d85ac88023025021e4352537636d2fc8a8d43667 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2011-10-14T16:32:30 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 2 ++ SoObjects/Mailer/SOGoMailObject.m | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e689671cd..5b4987aca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ * SoObjects/SOGo/SOGoGCSFolder.m (setRoles:forUser:..) We now even cache "None" roles. + * SoObjects/Mailer/SOGoMailObject.m (fetchCoreInfos) + We now handle correctly untagged responses. 2011-10-13 Francis Lachapelle diff --git a/SoObjects/Mailer/SOGoMailObject.m b/SoObjects/Mailer/SOGoMailObject.m index 8faf74c47..15ca436e5 100644 --- a/SoObjects/Mailer/SOGoMailObject.m +++ b/SoObjects/Mailer/SOGoMailObject.m @@ -217,6 +217,7 @@ static BOOL debugSoParts = NO; - (id) fetchCoreInfos { id msgs; + int i; if (!coreInfos) { @@ -224,8 +225,21 @@ static BOOL debugSoParts = NO; if (heavyDebug) [self logWithFormat: @"M: %@", msgs]; msgs = [msgs valueForKey: @"fetch"]; + + // We MUST honor untagged IMAP responses here otherwise we could + // return really borken and nasty results. if ([msgs count] > 0) - coreInfos = [msgs objectAtIndex: 0]; + { + for (i = 0; i < [msgs count]; i++) + { + coreInfos = [msgs objectAtIndex: i]; + + if ([[coreInfos objectForKey: @"uid"] intValue] == [[self nameInContainer] intValue]) + break; + + coreInfos = nil; + } + } [coreInfos retain]; }