aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/imap
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-10-21 22:01:17 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-10-21 22:01:17 -0700
commitaa98c2e77818ffa0d355ff4008b7759a7acfe810 (patch)
tree1a5ef332f88fd98a414b2ed9fbdbcd7d3f99af05 /src/core/imap
parentbc8b025a69d1a74a8e8257a5ea3af6b5dedcc719 (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-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);
}