diff options
author | 2013-04-28 20:49:09 -0700 | |
---|---|---|
committer | 2013-04-28 20:49:09 -0700 | |
commit | 6d1f8952d667509f705c4853799f65dc42420c85 (patch) | |
tree | 6834ec37123dec3adf28fd5f3d5e68fceff3cc58 /src/core/provider | |
parent | d9da8ea6e22361a35c0bf94237c8c16d5021a3b4 (diff) |
fixes for providers
Diffstat (limited to 'src/core/provider')
-rw-r--r-- | src/core/provider/MCMailProvider.cc | 16 | ||||
-rw-r--r-- | src/core/provider/MCMailProvidersManager.cc | 21 | ||||
-rw-r--r-- | src/core/provider/MCNetService.cc | 28 |
3 files changed, 36 insertions, 29 deletions
diff --git a/src/core/provider/MCMailProvider.cc b/src/core/provider/MCMailProvider.cc index e9f64872..40d4abf7 100644 --- a/src/core/provider/MCMailProvider.cc +++ b/src/core/provider/MCMailProvider.cc @@ -32,9 +32,15 @@ void MailProvider::initWihInfo(HashMap * info) Array * popInfos; HashMap * serverInfo; Array * mxs; - - mDomainMatch = (Array *) info->objectForKey(MCSTR("domain-match"))->retain(); - mMailboxPaths = (HashMap *) info->objectForKey(MCSTR("mailboxes"))->retain(); + + mDomainMatch = NULL; + if (info->objectForKey(MCSTR("domain-match")) != NULL) { + mDomainMatch = (Array *) info->objectForKey(MCSTR("domain-match"))->retain(); + } + mMailboxPaths = NULL; + if (info->objectForKey(MCSTR("mailboxes")) != NULL) { + mMailboxPaths = (HashMap *) info->objectForKey(MCSTR("mailboxes"))->retain(); + } mxs = (Array *) info->objectForKey(MCSTR("mx")); mc_foreacharray(String, mx, mxs) { mMxSet->addObject(mx->lowercaseString()); @@ -189,14 +195,14 @@ String * MailProvider::importantFolderPath() bool MailProvider::isMainFolder(String * folderPath, String * prefix) { - mc_foreachdictionaryValue(Object, path, mMailboxPaths) { + mc_foreachdictionaryValue(String, path, mMailboxPaths) { String * fullPath; if (prefix != NULL) { fullPath = prefix->stringByAppendingString((String *) path); } else { - fullPath = (String *) path; + fullPath = path; } if (fullPath->isEqual(folderPath)) diff --git a/src/core/provider/MCMailProvidersManager.cc b/src/core/provider/MCMailProvidersManager.cc index 0b45f4da..af4a85e6 100644 --- a/src/core/provider/MCMailProvidersManager.cc +++ b/src/core/provider/MCMailProvidersManager.cc @@ -19,10 +19,7 @@ void MailProvidersManager::init() MailProvider * MailProvidersManager::providerForEmail(String * email) { - mc_foreachdictionaryValue(Object, identifier, mProviders) { - MailProvider * provider; - - provider = (MailProvider *) mProviders->objectForKey(identifier); + mc_foreachdictionaryValue(MailProvider, provider, mProviders) { if (provider->matchEmail(email)) return provider; } @@ -32,10 +29,7 @@ MailProvider * MailProvidersManager::providerForEmail(String * email) MailProvider * MailProvidersManager::providerForMX(String * hostname) { - mc_foreachdictionaryValue(Object, identifier, mProviders) { - MailProvider * provider; - - provider = (MailProvider *) mProviders->objectForKey(identifier); + mc_foreachdictionaryValue(MailProvider, provider, mProviders) { if (provider->matchMX(hostname)) return provider; } @@ -50,12 +44,11 @@ MailProvider * MailProvidersManager::providerForIdentifier(String * identifier) void MailProvidersManager::registerProviders(HashMap * providers) { - mc_foreachdictionaryValue(Object, identifier, providers) { - MailProvider * provider; - - provider = new MailProvider((HashMap *) providers->objectForKey(identifier)); - provider->setIdentifier((String *) identifier); - mProviders->setObjectForKey(provider, identifier); + mc_foreachdictionaryKeyAndValue(String, identifier, HashMap, providerInfo, providers) { + MailProvider * provider = new MailProvider(providerInfo); + provider->setIdentifier(identifier); + MCLog("register %s", MCUTF8DESC(identifier)); + mProviders->setObjectForKey(identifier, provider); provider->release(); } } diff --git a/src/core/provider/MCNetService.cc b/src/core/provider/MCNetService.cc index 0ffcbaef..aef092e1 100644 --- a/src/core/provider/MCNetService.cc +++ b/src/core/provider/MCNetService.cc @@ -17,13 +17,19 @@ void NetService::init() { NetService::NetService(HashMap * info) { init(); - bool ssl; - bool starttls; + bool ssl = false; + bool starttls = false; this->setHostname((String *) info->objectForKey(MCSTR("hostname"))); - this->setPort(((Value *) info->objectForKey(MCSTR("port")))->intValue()); - ssl = ((Value *) info->objectForKey(MCSTR("ssl")))->boolValue(); - starttls = ((Value *) info->objectForKey(MCSTR("starttls")))->boolValue(); + if (info->objectForKey(MCSTR("port")) != NULL) { + this->setPort(((Value *) info->objectForKey(MCSTR("port")))->intValue()); + } + if (info->objectForKey(MCSTR("ssl")) != NULL) { + ssl = ((Value *) info->objectForKey(MCSTR("ssl")))->boolValue(); + } + if (info->objectForKey(MCSTR("starttls")) != NULL) { + starttls = ((Value *) info->objectForKey(MCSTR("starttls")))->boolValue(); + } if (ssl) { mConnectionType = ConnectionTypeTLS; } @@ -84,17 +90,19 @@ HashMap * NetService::info() { result = new HashMap(); if (mHostname != NULL) { - result->setObjectForKey(mHostname, MCSTR("hostname")); + result->setObjectForKey(MCSTR("hostname"), mHostname); } if (mPort != 0) { - result->setObjectForKey(Value::valueWithIntValue(mPort), MCSTR("port")); + result->setObjectForKey(MCSTR("port"), Value::valueWithIntValue(mPort)); } - switch (mConnectionType & ConnectionTypeMask) { + switch (mConnectionType) { case ConnectionTypeTLS: - result->setObjectForKey(Value::valueWithBoolValue(true), MCSTR("ssl")); + result->setObjectForKey(MCSTR("ssl"), Value::valueWithBoolValue(true)); break; case ConnectionTypeStartTLS: - result->setObjectForKey(Value::valueWithBoolValue(true), MCSTR("starttls")); + result->setObjectForKey(MCSTR("starttls"), Value::valueWithBoolValue(true)); + break; + default: break; } |