aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncConnection.cc7
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncConnection.h7
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.cc13
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.h9
-rw-r--r--src/async/imap/MCIMAPFetchFoldersOperation.cc4
-rw-r--r--src/async/imap/MCIMAPFetchFoldersOperation.h2
-rw-r--r--src/async/imap/MCIMAPOperation.cc3
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc163
-rwxr-xr-xsrc/core/imap/MCIMAPSession.h16
-rw-r--r--src/objc/abstract/MCOConstants.h2
-rwxr-xr-xsrc/objc/imap/MCOIMAPSession.h2
-rwxr-xr-xsrc/objc/imap/MCOIMAPSession.mm2
12 files changed, 153 insertions, 77 deletions
diff --git a/src/async/imap/MCIMAPAsyncConnection.cc b/src/async/imap/MCIMAPAsyncConnection.cc
index 5993302e..789147e2 100755
--- a/src/async/imap/MCIMAPAsyncConnection.cc
+++ b/src/async/imap/MCIMAPAsyncConnection.cc
@@ -86,7 +86,7 @@ IMAPAsyncConnection::IMAPAsyncConnection()
mSession = new IMAPSession();
mQueue = new OperationQueue();
mDefaultNamespace = NULL;
- mDelimiter = 0;
+ //mDelimiter = 0;
mLastFolder = NULL;
mQueueCallback = new IMAPOperationQueueCallback(this);
mQueue->setCallback(mQueueCallback);
@@ -209,6 +209,7 @@ bool IMAPAsyncConnection::isVoIPEnabled()
return mSession->isVoIPEnabled();
}
+#if 0
void IMAPAsyncConnection::setDelimiter(char delimiter)
{
mSession->setDelimiter(delimiter);
@@ -219,6 +220,7 @@ char IMAPAsyncConnection::delimiter()
{
return mDelimiter;
}
+#endif
void IMAPAsyncConnection::setDefaultNamespace(IMAPNamespace * ns)
{
@@ -644,8 +646,7 @@ IMAPMessageRenderingOperation * IMAPAsyncConnection::plainTextBodyRenderingOpera
void IMAPAsyncConnection::setAutomaticConfigurationEnabled(bool enabled)
{
mAutomaticConfigurationEnabled = enabled;
- mSession->setAutomaticCapabilitiesEnabled(enabled);
- mSession->setAutomaticNamespaceEnabled(enabled);
+ mSession->setAutomaticConfigurationEnabled(enabled);
}
bool IMAPAsyncConnection::isAutomaticConfigurationEnabled()
diff --git a/src/async/imap/MCIMAPAsyncConnection.h b/src/async/imap/MCIMAPAsyncConnection.h
index d2cdbcaa..720bd9c6 100755
--- a/src/async/imap/MCIMAPAsyncConnection.h
+++ b/src/async/imap/MCIMAPAsyncConnection.h
@@ -67,12 +67,13 @@ namespace mailcore {
virtual void setVoIPEnabled(bool enabled);
virtual bool isVoIPEnabled();
- virtual void setDelimiter(char delimiter);
- virtual char delimiter();
+ //virtual void setDelimiter(char delimiter);
+ //virtual char delimiter();
virtual void setAutomaticConfigurationEnabled(bool enabled);
virtual bool isAutomaticConfigurationEnabled();
+ // Needs to be run before starting a connection.
virtual void setDefaultNamespace(IMAPNamespace * ns);
virtual IMAPNamespace * defaultNamespace();
@@ -135,7 +136,7 @@ namespace mailcore {
private:
IMAPSession * mSession;
OperationQueue * mQueue;
- char mDelimiter;
+ //char mDelimiter;
IMAPNamespace * mDefaultNamespace;
String * mLastFolder;
IMAPOperationQueueCallback * mQueueCallback;
diff --git a/src/async/imap/MCIMAPAsyncSession.cc b/src/async/imap/MCIMAPAsyncSession.cc
index 48e96004..b9cb5615 100755
--- a/src/async/imap/MCIMAPAsyncSession.cc
+++ b/src/async/imap/MCIMAPAsyncSession.cc
@@ -12,6 +12,7 @@
#include "MCIMAPNamespace.h"
#include "MCOperationQueueCallback.h"
#include "MCConnectionLogger.h"
+#include "MCIMAPSession.h"
#define DEFAULT_MAX_CONNECTIONS 3
@@ -32,7 +33,7 @@ IMAPAsyncSession::IMAPAsyncSession()
mConnectionType = ConnectionTypeClear;
mCheckCertificateEnabled = true;
mVoIPEnabled = true;
- mDelimiter = 0;
+ //mDelimiter = 0;
mDefaultNamespace = NULL;
mTimeout = 30.;
mConnectionLogger = NULL;
@@ -149,7 +150,7 @@ bool IMAPAsyncSession::isVoIPEnabled()
return mVoIPEnabled;
}
-
+#if 0
void IMAPAsyncSession::setDelimiter(char delimiter)
{
mDelimiter = delimiter;
@@ -159,6 +160,7 @@ char IMAPAsyncSession::delimiter()
{
return mDelimiter;
}
+#endif
IMAPNamespace * IMAPAsyncSession::defaultNamespace()
{
@@ -207,11 +209,13 @@ IMAPAsyncConnection * IMAPAsyncSession::session()
session->setTimeout(mTimeout);
session->setCheckCertificateEnabled(mCheckCertificateEnabled);
session->setVoIPEnabled(mVoIPEnabled);
- session->setDelimiter(mDelimiter);
+ //session->setDelimiter(mDelimiter);
session->setDefaultNamespace(mDefaultNamespace);
+#if 0 // should be implemented properly
if (mAutomaticConfigurationDone) {
session->setAutomaticConfigurationEnabled(false);
}
+#endif
return session;
}
@@ -501,7 +505,8 @@ IMAPMessageRenderingOperation * IMAPAsyncSession::plainTextBodyRenderingOperatio
return session->plainTextBodyRenderingOperation(message, folder);
}
-void IMAPAsyncSession::automaticConfigurateDone()
+void IMAPAsyncSession::automaticConfigurationDone(IMAPSession * session)
{
+ setDefaultNamespace(session->defaultNamespace());
mAutomaticConfigurationDone = true;
}
diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h
index 1d0e3e23..920183f2 100755
--- a/src/async/imap/MCIMAPAsyncSession.h
+++ b/src/async/imap/MCIMAPAsyncSession.h
@@ -36,6 +36,7 @@ namespace mailcore {
class IMAPQuotaOperation;
class IMAPMessageRenderingOperation;
class IMAPMessage;
+ class IMAPSession;
class IMAPAsyncSession : public Object {
public:
@@ -74,8 +75,8 @@ namespace mailcore {
virtual void setVoIPEnabled(bool enabled);
virtual bool isVoIPEnabled();
- virtual void setDelimiter(char delimiter);
- virtual char delimiter();
+ //virtual void setDelimiter(char delimiter);
+ //virtual char delimiter();
virtual void setDefaultNamespace(IMAPNamespace * ns);
virtual IMAPNamespace * defaultNamespace();
@@ -142,7 +143,7 @@ namespace mailcore {
virtual IMAPMessageRenderingOperation * plainTextBodyRenderingOperation(IMAPMessage * message, String * folder);
public: // private
- virtual void automaticConfigurateDone();
+ virtual void automaticConfigurationDone(IMAPSession * session);
private:
Array * mSessions;
@@ -156,7 +157,7 @@ namespace mailcore {
ConnectionType mConnectionType;
bool mCheckCertificateEnabled;
bool mVoIPEnabled;
- char mDelimiter;
+ //char mDelimiter;
IMAPNamespace * mDefaultNamespace;
time_t mTimeout;
bool mAllowsFolderConcurrentAccessEnabled;
diff --git a/src/async/imap/MCIMAPFetchFoldersOperation.cc b/src/async/imap/MCIMAPFetchFoldersOperation.cc
index 41a95572..637c981c 100644
--- a/src/async/imap/MCIMAPFetchFoldersOperation.cc
+++ b/src/async/imap/MCIMAPFetchFoldersOperation.cc
@@ -53,14 +53,18 @@ void IMAPFetchFoldersOperation::main()
MC_SAFE_RETAIN(mFolders);
setError(error);
+#if 0
char * delimiterData = (char *) malloc(1);
* delimiterData = session()->session()->delimiter();
performMethodOnMainThread((Object::Method) &IMAPFetchFoldersOperation::setDelimiterDataOnMainThread,
delimiterData, true);
+#endif
}
+#if 0
void IMAPFetchFoldersOperation::setDelimiterDataOnMainThread(char * delimiterData)
{
session()->setDelimiter(* delimiterData);
free(delimiterData);
}
+#endif
diff --git a/src/async/imap/MCIMAPFetchFoldersOperation.h b/src/async/imap/MCIMAPFetchFoldersOperation.h
index c59bf85a..2dd01831 100644
--- a/src/async/imap/MCIMAPFetchFoldersOperation.h
+++ b/src/async/imap/MCIMAPFetchFoldersOperation.h
@@ -35,7 +35,7 @@ namespace mailcore {
String * /* IMAPFolder */ mFolder;
bool mFetchSubscribedEnabled;
Array * mFolders;
- void setDelimiterDataOnMainThread(char * delimiterData);
+ //void setDelimiterDataOnMainThread(char * delimiterData);
};
}
diff --git a/src/async/imap/MCIMAPOperation.cc b/src/async/imap/MCIMAPOperation.cc
index 2ceb2b55..1211a73b 100644
--- a/src/async/imap/MCIMAPOperation.cc
+++ b/src/async/imap/MCIMAPOperation.cc
@@ -142,6 +142,7 @@ void IMAPOperation::beforeMain()
void IMAPOperation::afterMain()
{
if (mSession->session()->isAutomaticConfigurationDone()) {
- mSession->owner()->automaticConfigurateDone();
+ mSession->owner()->automaticConfigurationDone(mSession->session());
+ mSession->session()->resetAutomaticConfigurationDone();
}
}
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc
index bc82a212..4384bf28 100755
--- a/src/core/imap/MCIMAPSession.cc
+++ b/src/core/imap/MCIMAPSession.cc
@@ -336,6 +336,7 @@ void IMAPSession::init()
mCondstoreEnabled = false;
mIdentityEnabled = false;
mNamespaceEnabled = false;
+ mCompressionEnabled = false;
mWelcomeString = NULL;
mNeedsMboxMailWorkaround = false;
mDefaultNamespace = NULL;
@@ -354,8 +355,7 @@ void IMAPSession::init()
mProgressCallback = NULL;
mProgressItemsCount = 0;
mConnectionLogger = NULL;
- mAutomaticCapabilitiesEnabled = true;
- mAutomaticNamespaceEnabled = true;
+ mAutomaticConfigurationEnabled = true;
mAutomaticConfigurationDone = false;
}
@@ -642,7 +642,7 @@ void IMAPSession::connect(ErrorCode * pError)
mState = STATE_CONNECTED;
- if (isAutomaticCapabilitiesEnabled()) {
+ if (isAutomaticConfigurationEnabled()) {
if ((mImap->imap_connection_info != NULL) && (mImap->imap_connection_info->imap_capability != NULL)) {
// Don't keep result. It will be kept in session state.
capabilitySetWithSessionState(IndexSet::indexSet());
@@ -838,7 +838,7 @@ void IMAPSession::login(ErrorCode * pError)
mState = STATE_LOGGEDIN;
- if (isAutomaticCapabilitiesEnabled()) {
+ if (isAutomaticConfigurationEnabled()) {
if ((mImap->imap_connection_info != NULL) && (mImap->imap_connection_info->imap_capability != NULL)) {
// Don't keep result. It will be kept in session state.
capabilitySetWithSessionState(IndexSet::indexSet());
@@ -850,15 +850,13 @@ void IMAPSession::login(ErrorCode * pError)
return;
}
}
-
- enableFeatures();
}
else {
- // TODO: capabilities should be shared for non automatic capabilities sessions.
- enableFeatures();
+ // TODO: capabilities should be shared with other sessions for non automatic capabilities sessions.
}
-
- if (isAutomaticNamespaceEnabled()) {
+ enableFeatures();
+
+ if (isAutomaticConfigurationEnabled()) {
if (isNamespaceEnabled()) {
HashMap * result = fetchNamespace(pError);
if (* pError != ErrorNone) {
@@ -896,8 +894,7 @@ void IMAPSession::login(ErrorCode * pError)
}
}
else {
- // TODO: namespace should be shared for non automatic namespace.
- // setDefaultNamespace()
+ // TODO: namespace should be shared with other sessions for non automatic namespace.
}
mAutomaticConfigurationDone = true;
@@ -1252,18 +1249,21 @@ Array * /* IMAPFolder */ IMAPSession::fetchSubscribedFolders(ErrorCode * pError)
{
int r;
clist * imap_folders;
- char delimiter;
MCLog("fetch subscribed");
loginIfNeeded(pError);
if (* pError != ErrorNone)
return NULL;
- delimiter = fetchDelimiterIfNeeded(mDelimiter, pError);
- if (* pError != ErrorNone)
- return NULL;
-
- setDelimiter(delimiter);
+ if (mDelimiter == 0) {
+ char delimiter;
+
+ delimiter = fetchDelimiterIfNeeded(mDelimiter, pError);
+ if (* pError != ErrorNone)
+ return NULL;
+
+ setDelimiter(delimiter);
+ }
String * prefix;
prefix = defaultNamespace()->mainPrefix();
@@ -1271,8 +1271,8 @@ Array * /* IMAPFolder */ IMAPSession::fetchSubscribedFolders(ErrorCode * pError)
prefix = MCSTR("");
}
if (prefix->length() > 0) {
- if (!prefix->hasSuffix(String::stringWithUTF8Format("%c", delimiter))) {
- prefix = prefix->stringByAppendingUTF8Format("%c", delimiter);
+ if (!prefix->hasSuffix(String::stringWithUTF8Format("%c", mDelimiter))) {
+ prefix = prefix->stringByAppendingUTF8Format("%c", mDelimiter);
}
}
@@ -1285,17 +1285,20 @@ Array * /* IMAPFolder */ IMAPSession::fetchAllFolders(ErrorCode * pError)
{
int r;
clist * imap_folders;
- char delimiter;
loginIfNeeded(pError);
if (* pError != ErrorNone)
return NULL;
- delimiter = fetchDelimiterIfNeeded(mDelimiter, pError);
- if (* pError != ErrorNone)
- return NULL;
-
- setDelimiter(delimiter);
+ if (mDelimiter == 0) {
+ char delimiter;
+
+ delimiter = fetchDelimiterIfNeeded(mDelimiter, pError);
+ if (* pError != ErrorNone)
+ return NULL;
+
+ setDelimiter(delimiter);
+ }
String * prefix = NULL;
if (defaultNamespace()) {
@@ -1305,8 +1308,8 @@ Array * /* IMAPFolder */ IMAPSession::fetchAllFolders(ErrorCode * pError)
prefix = MCSTR("");
}
if (prefix->length() > 0) {
- if (!prefix->hasSuffix(String::stringWithUTF8Format("%c", delimiter))) {
- prefix = prefix->stringByAppendingUTF8Format("%c", delimiter);
+ if (!prefix->hasSuffix(String::stringWithUTF8Format("%c", mDelimiter))) {
+ prefix = prefix->stringByAppendingUTF8Format("%c", mDelimiter);
}
}
@@ -3139,37 +3142,65 @@ void IMAPSession::capabilitySetWithSessionState(IndexSet * capabilities)
{
if (mailimap_has_id(mImap)) {
capabilities->addIndex(IMAPCapabilityId);
- mIdentityEnabled = true;
}
if (mailimap_has_xlist(mImap)) {
capabilities->addIndex(IMAPCapabilityXList);
- mXListEnabled = true;
}
if (mailimap_has_extension(mImap, (char *) "X-GM-EXT-1")) {
// Disable use of XLIST if this is the Gmail IMAP server because it implements
// RFC 6154.
- mXListEnabled = false;
+ capabilities->addIndex(IMAPCapabilityGmail);
}
if (mailimap_has_idle(mImap)) {
capabilities->addIndex(IMAPCapabilityIdle);
- mIdleEnabled = true;
}
if (mailimap_has_condstore(mImap)) {
capabilities->addIndex(IMAPCapabilityCondstore);
- mCondstoreEnabled = true;
}
if (mailimap_has_qresync(mImap)) {
- result->addIndex(IMAPCapabilityQResync);
- mQResyncEnabled = true;
+ capabilities->addIndex(IMAPCapabilityQResync);
}
if (mailimap_has_xoauth2(mImap)) {
capabilities->addIndex(IMAPCapabilityXOAuth2);
- mXOauth2Enabled = true;
}
if (mailimap_has_namespace(mImap)) {
capabilities->addIndex(IMAPCapabilityNamespace);
+ }
+ if (mailimap_has_compress_deflate(mImap)) {
+ capabilities->addIndex(IMAPCapabilityCompressDeflate);
+ }
+ applyCapabilities(capabilities);
+}
+
+void IMAPSession::applyCapabilities(IndexSet * capabilities)
+{
+ if (capabilities->containsIndex(IMAPCapabilityId)) {
+ mIdentityEnabled = true;
+ }
+ if (capabilities->containsIndex(IMAPCapabilityXList)) {
+ mXListEnabled = true;
+ }
+ if (capabilities->containsIndex(IMAPCapabilityGmail)) {
+ mXListEnabled = false;
+ }
+ if (capabilities->containsIndex(IMAPCapabilityIdle)) {
+ mIdleEnabled = true;
+ }
+ if (capabilities->containsIndex(IMAPCapabilityCondstore)) {
+ mCondstoreEnabled = true;
+ }
+ if (capabilities->containsIndex(IMAPCapabilityQResync)) {
+ mQResyncEnabled = true;
+ }
+ if (capabilities->containsIndex(IMAPCapabilityXOAuth2)) {
+ mXOauth2Enabled = true;
+ }
+ if (capabilities->containsIndex(IMAPCapabilityNamespace)) {
mNamespaceEnabled = true;
}
+ if (capabilities->containsIndex(IMAPCapabilityCompressDeflate)) {
+ mCompressionEnabled = true;
+ }
}
bool IMAPSession::isIdleEnabled()
@@ -3207,6 +3238,11 @@ bool IMAPSession::isNamespaceEnabled()
return mNamespaceEnabled;
}
+bool IMAPSession::isCompressionEnabled()
+{
+ return mCompressionEnabled;
+}
+
bool IMAPSession::isDisconnected()
{
return mState == STATE_DISCONNECTED;
@@ -3295,24 +3331,14 @@ String * IMAPSession::plainTextBodyRendering(IMAPMessage * message, String * fol
return plainTextBodyString;
}
-void IMAPSession::setAutomaticCapabilitiesEnabled(bool enabled)
+void IMAPSession::setAutomaticConfigurationEnabled(bool enabled)
{
- mAutomaticCapabilitiesEnabled = enabled;
+ mAutomaticConfigurationEnabled = enabled;
}
-bool IMAPSession::isAutomaticCapabilitiesEnabled()
+bool IMAPSession::isAutomaticConfigurationEnabled()
{
- return mAutomaticCapabilitiesEnabled;
-}
-
-void IMAPSession::setAutomaticNamespaceEnabled(bool enabled)
-{
- mAutomaticNamespaceEnabled = enabled;
-}
-
-bool IMAPSession::isAutomaticNamespaceEnabled()
-{
- return mAutomaticNamespaceEnabled;
+ return mAutomaticConfigurationEnabled;
}
bool IMAPSession::enableFeature(String * feature)
@@ -3339,12 +3365,41 @@ bool IMAPSession::enableFeature(String * feature)
void IMAPSession::enableFeatures()
{
+ if (isCompressionEnabled()) {
+ ErrorCode error;
+ enableCompression(&error);
+ if (error != ErrorNone) {
+ MCLog("could not enable compression");
+ }
+ }
+
if (isQResyncEnabled()) {
- IMAPSession::enableFeature(MCSTR("QRESYNC"));
+ enableFeature(MCSTR("QRESYNC"));
}
else if (isCondstoreEnabled()) {
- IMAPSession::enableFeature(MCSTR("CONDSTORE"));
+ enableFeature(MCSTR("CONDSTORE"));
+ }
+}
+
+void IMAPSession::enableCompression(ErrorCode * pError)
+{
+ int r;
+ r = mailimap_compress(mImap);
+ if (r == MAILIMAP_ERROR_STREAM) {
+ * pError = ErrorConnection;
+ return;
}
+ else if (r == MAILIMAP_ERROR_PARSE) {
+ * pError = ErrorParse;
+ return;
+ }
+ else if (hasError(r)) {
+ * pError = ErrorCompression;
+ return;
+ }
+
+ this->mCompressionEnabled = true;
+ * pError = ErrorNone;
}
bool IMAPSession::isAutomaticConfigurationDone()
@@ -3352,3 +3407,7 @@ bool IMAPSession::isAutomaticConfigurationDone()
return mAutomaticConfigurationDone;
}
+void IMAPSession::resetAutomaticConfigurationDone()
+{
+ mAutomaticConfigurationDone = false;
+}
diff --git a/src/core/imap/MCIMAPSession.h b/src/core/imap/MCIMAPSession.h
index 90e145fd..19418323 100755
--- a/src/core/imap/MCIMAPSession.h
+++ b/src/core/imap/MCIMAPSession.h
@@ -144,6 +144,8 @@ namespace mailcore {
virtual IndexSet * capability(ErrorCode * pError);
+ virtual void enableCompression(ErrorCode * pError);
+
virtual uint32_t uidValidity();
virtual uint32_t uidNext();
virtual uint64_t modSequenceValue();
@@ -157,6 +159,7 @@ namespace mailcore {
virtual bool isIdentityEnabled();
virtual bool isXOAuthEnabled();
virtual bool isNamespaceEnabled();
+ virtual bool isCompressionEnabled();
virtual void setConnectionLogger(ConnectionLogger * logger);
virtual ConnectionLogger * connectionLogger();
@@ -175,19 +178,18 @@ namespace mailcore {
virtual String * plainTextBodyRendering(IMAPMessage * message, String * folder, ErrorCode * pError);
/** Enable automatic query of the capabilities of the IMAP server when set to true. */
- virtual void setAutomaticCapabilitiesEnabled(bool enabled);
+ virtual void setAutomaticConfigurationEnabled(bool enabled);
/** Check if the automatic query of the capabilities of the IMAP server is enabled. */
- virtual bool isAutomaticCapabilitiesEnabled();
-
- virtual void setAutomaticNamespaceEnabled(bool enabled);
- virtual bool isAutomaticNamespaceEnabled();
+ virtual bool isAutomaticConfigurationEnabled();
public: // private
virtual void loginIfNeeded(ErrorCode * pError);
virtual void connectIfNeeded(ErrorCode * pError);
virtual bool isDisconnected();
virtual bool isAutomaticConfigurationDone();
+ virtual void resetAutomaticConfigurationDone();
+ virtual void applyCapabilities(IndexSet * capabilities);
private:
String * mHostname;
@@ -211,6 +213,7 @@ namespace mailcore {
bool mIdentityEnabled;
bool mXOauth2Enabled;
bool mNamespaceEnabled;
+ bool mCompressionEnabled;
String * mWelcomeString;
bool mNeedsMboxMailWorkaround;
uint32_t mUIDValidity;
@@ -228,8 +231,7 @@ namespace mailcore {
IMAPProgressCallback * mProgressCallback;
unsigned int mProgressItemsCount;
ConnectionLogger * mConnectionLogger;
- bool mAutomaticCapabilitiesEnabled;
- bool mAutomaticNamespaceEnabled;
+ bool mAutomaticConfigurationEnabled;
bool mAutomaticConfigurationDone;
void init();
diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h
index 427e787a..0bdf9af6 100644
--- a/src/objc/abstract/MCOConstants.h
+++ b/src/objc/abstract/MCOConstants.h
@@ -328,6 +328,8 @@ typedef enum {
MCOErrorDeleteMessage,
/** SMTP: Error while checking account.*/
MCOErrorInvalidAccount,
+ /** IMAP: Error when trying to enable compression.*/
+ MCOErrorCompression,
/** The count of all errors */
MCOErrorCodeCount,
} MCOErrorCode;
diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h
index ea920114..fa22c913 100755
--- a/src/objc/imap/MCOIMAPSession.h
+++ b/src/objc/imap/MCOIMAPSession.h
@@ -80,7 +80,7 @@
@property (nonatomic, assign, getter=isVoIPEnabled) BOOL voIPEnabled;
/** The default delimiter for the folder paths */
-@property (nonatomic, assign) char delimiter;
+//@property (nonatomic, assign) char delimiter;
/** The default namespace. */
@property (nonatomic, strong) MCOIMAPNamespace * defaultNamespace;
diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm
index a9bbeb5c..4c1542f3 100755
--- a/src/objc/imap/MCOIMAPSession.mm
+++ b/src/objc/imap/MCOIMAPSession.mm
@@ -86,7 +86,7 @@ MCO_OBJC_SYNTHESIZE_SCALAR(MCOConnectionType, mailcore::ConnectionType, setConne
MCO_OBJC_SYNTHESIZE_SCALAR(NSTimeInterval, time_t, setTimeout, timeout)
MCO_OBJC_SYNTHESIZE_BOOL(setCheckCertificateEnabled, isCheckCertificateEnabled)
MCO_OBJC_SYNTHESIZE_BOOL(setVoIPEnabled, isVoIPEnabled)
-MCO_OBJC_SYNTHESIZE_SCALAR(char, char, setDelimiter, delimiter)
+//MCO_OBJC_SYNTHESIZE_SCALAR(char, char, setDelimiter, delimiter)
MCO_OBJC_SYNTHESIZE_SCALAR(BOOL, BOOL, setAllowsFolderConcurrentAccessEnabled, allowsFolderConcurrentAccessEnabled)
MCO_OBJC_SYNTHESIZE_SCALAR(unsigned int, unsigned int, setMaximumConnections, maximumConnections)