diff options
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); } |