aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/imap
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/imap')
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc13
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);
}