diff options
author | 2013-10-21 22:01:17 -0700 | |
---|---|---|
committer | 2013-10-21 22:01:17 -0700 | |
commit | aa98c2e77818ffa0d355ff4008b7759a7acfe810 (patch) | |
tree | 1a5ef332f88fd98a414b2ed9fbdbcd7d3f99af05 /src/core/imap | |
parent | bc8b025a69d1a74a8e8257a5ea3af6b5dedcc719 (diff) |
Fixed #425: fixed default namespace in case namespace is not supported for sina.com imap server.
Diffstat (limited to 'src/core/imap')
-rwxr-xr-x | src/core/imap/MCIMAPSession.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index f4c6364a..868ca5e3 100755 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -852,6 +852,7 @@ void IMAPSession::login(ErrorCode * pError) enableFeatures(); if (isAutomaticConfigurationEnabled()) { + bool hasDefaultNamespace = false; if (isNamespaceEnabled()) { HashMap * result = fetchNamespace(pError); if (* pError != ErrorNone) { @@ -859,10 +860,14 @@ void IMAPSession::login(ErrorCode * pError) return; } IMAPNamespace * personalNamespace = (IMAPNamespace *) result->objectForKey(IMAPNamespacePersonal); - setDefaultNamespace(personalNamespace); - mDelimiter = defaultNamespace()->mainDelimiter(); + if (personalNamespace != NULL) { + setDefaultNamespace(personalNamespace); + mDelimiter = defaultNamespace()->mainDelimiter(); + hasDefaultNamespace = true; + } } - else { + + if (!hasDefaultNamespace) { clist * imap_folders; IMAPFolder * folder; Array * folders; @@ -884,7 +889,7 @@ void IMAPSession::login(ErrorCode * pError) } mDelimiter = folder->delimiter(); - IMAPNamespace * defaultNamespace = IMAPNamespace::namespaceWithPrefix(folder->path(), folder->delimiter()); + IMAPNamespace * defaultNamespace = IMAPNamespace::namespaceWithPrefix(MCSTR(""), folder->delimiter()); setDefaultNamespace(defaultNamespace); } |