aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/provider
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-04-28 20:49:09 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-04-28 20:49:09 -0700
commit6d1f8952d667509f705c4853799f65dc42420c85 (patch)
tree6834ec37123dec3adf28fd5f3d5e68fceff3cc58 /src/core/provider
parentd9da8ea6e22361a35c0bf94237c8c16d5021a3b4 (diff)
fixes for providers
Diffstat (limited to 'src/core/provider')
-rw-r--r--src/core/provider/MCMailProvider.cc16
-rw-r--r--src/core/provider/MCMailProvidersManager.cc21
-rw-r--r--src/core/provider/MCNetService.cc28
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;
}