aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/provider/MCAccountValidator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/provider/MCAccountValidator.cpp')
-rw-r--r--src/core/provider/MCAccountValidator.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/provider/MCAccountValidator.cpp b/src/core/provider/MCAccountValidator.cpp
index 1e6ebdd9..d35bd000 100644
--- a/src/core/provider/MCAccountValidator.cpp
+++ b/src/core/provider/MCAccountValidator.cpp
@@ -18,6 +18,7 @@
#include "MCPOPOperation.h"
#include "MCSMTPOperation.h"
#include "MCMXRecordResolverOperation.h"
+#include "MCIMAPCheckAccountOperation.h"
using namespace mailcore;
@@ -47,6 +48,7 @@ void AccountValidator::init()
mImapError = ErrorNone;
mPopError = ErrorNone;
mSmtpError = ErrorNone;
+ mImapLoginResponse = NULL;
mCurrentServiceIndex = 0;
mCurrentServiceTested = 0;
@@ -77,6 +79,7 @@ AccountValidator::AccountValidator()
AccountValidator::~AccountValidator()
{
pthread_mutex_destroy(&mConnectionLoggerLock);
+ MC_SAFE_RELEASE(mImapLoginResponse);
MC_SAFE_RELEASE(mEmail);
MC_SAFE_RELEASE(mUsername);
MC_SAFE_RELEASE(mPassword);
@@ -256,7 +259,7 @@ void AccountValidator::checkNextHost()
mImapSession->setConnectionType(mImapServer->connectionType());
mImapSession->setConnectionLogger(this);
- mOperation = (IMAPOperation *)mImapSession->checkAccountOperation();
+ mOperation = mImapSession->checkAccountOperation();
mOperation->retain();
mOperation->setCallback(this);
mOperation->start();
@@ -340,6 +343,7 @@ void AccountValidator::checkNextHostDone()
if (mCurrentServiceTested == SERVICE_IMAP) {
mImapError = ((IMAPOperation *)mOperation)->error();
+ MC_SAFE_REPLACE_COPY(String, mImapLoginResponse, ((IMAPCheckAccountOperation *)mOperation)->loginResponse());
error = mImapError;
mImapSession->setConnectionLogger(NULL);
MC_SAFE_RELEASE(mImapSession);
@@ -506,6 +510,11 @@ ErrorCode AccountValidator::smtpError()
return mSmtpError;
}
+String * AccountValidator::imapLoginResponse()
+{
+ return mImapLoginResponse;
+}
+
void AccountValidator::setConnectionLogger(ConnectionLogger * logger)
{
pthread_mutex_lock(&mConnectionLoggerLock);