Skip to content

Commit 23b7111

Browse files
committed
Merge pull request #1350 from AlexKar/master
MCIMAPCapabilityOperation takes into account cached capabilities values
2 parents d8e239a + 0c2c183 commit 23b7111

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

src/async/imap/MCIMAPCapabilityOperation.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,16 @@ IndexSet * IMAPCapabilityOperation::capabilities()
3030

3131
void IMAPCapabilityOperation::main()
3232
{
33-
ErrorCode error;
34-
session()->session()->loginIfNeeded(&error);
35-
if (error != ErrorNone) {
36-
setError(error);
37-
return;
33+
ErrorCode error = ErrorNone;
34+
mCapabilities = session()->session()->storedCapabilities();
35+
if (mCapabilities == NULL) {
36+
session()->session()->loginIfNeeded(&error);
37+
if (error != ErrorNone) {
38+
setError(error);
39+
return;
40+
}
41+
mCapabilities = session()->session()->capability(&error);
3842
}
39-
mCapabilities = session()->session()->capability(&error);
4043
MC_SAFE_RETAIN(mCapabilities);
4144
setError(error);
4245
}

src/core/imap/MCIMAPSession.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3749,6 +3749,18 @@ void IMAPSession::capabilitySetWithSessionState(IndexSet * capabilities)
37493749
applyCapabilities(capabilities);
37503750
}
37513751

3752+
IndexSet * IMAPSession::storedCapabilities() {
3753+
if (mImap == NULL ||
3754+
mImap->imap_connection_info == NULL ||
3755+
mImap->imap_connection_info->imap_capability == NULL) {
3756+
return NULL;
3757+
}
3758+
IndexSet *result = new IndexSet();
3759+
capabilitySetWithSessionState(result);
3760+
result->autorelease();
3761+
return result;
3762+
}
3763+
37523764
void IMAPSession::applyCapabilities(IndexSet * capabilities)
37533765
{
37543766
if (capabilities->containsIndex(IMAPCapabilityId)) {

src/core/imap/MCIMAPSession.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ namespace mailcore {
176176
virtual bool isXOAuthEnabled();
177177
virtual bool isNamespaceEnabled();
178178
virtual bool isCompressionEnabled();
179-
virtual bool allowsNewPermanentFlags();
179+
virtual bool allowsNewPermanentFlags();
180180

181181
virtual String * gmailUserDisplayName() DEPRECATED_ATTRIBUTE;
182182

@@ -210,6 +210,7 @@ namespace mailcore {
210210
virtual bool isAutomaticConfigurationDone();
211211
virtual void resetAutomaticConfigurationDone();
212212
virtual void applyCapabilities(IndexSet * capabilities);
213+
virtual IndexSet * storedCapabilities();
213214

214215
private:
215216
String * mHostname;

0 commit comments

Comments
 (0)