Skip to content

Commit 3f28030

Browse files
MythicLionManadamtharani
authored andcommitted
Added API to MCOIMAPSession to enable the malformed address hack in the underlying libetpan struct.
1 parent c674184 commit 3f28030

File tree

8 files changed

+65
-0
lines changed

8 files changed

+65
-0
lines changed

src/async/imap/MCIMAPAsyncConnection.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,16 @@ bool IMAPAsyncConnection::isCheckCertificateEnabled()
221221
return mSession->isCheckCertificateEnabled();
222222
}
223223

224+
void IMAPAsyncConnection::setEnableMalformedAddressHack(bool enabled)
225+
{
226+
mSession->setEnableMalformedAddressHack(enabled);
227+
}
228+
229+
bool IMAPAsyncConnection::enableMalformedAddressHack()
230+
{
231+
return mSession->enableMalformedAddressHack();
232+
}
233+
224234
void IMAPAsyncConnection::setVoIPEnabled(bool enabled)
225235
{
226236
mSession->setVoIPEnabled(enabled);

src/async/imap/MCIMAPAsyncConnection.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ namespace mailcore {
6666

6767
virtual void setCheckCertificateEnabled(bool enabled);
6868
virtual bool isCheckCertificateEnabled();
69+
70+
virtual void setEnableMalformedAddressHack(bool enabled);
71+
virtual bool enableMalformedAddressHack();
6972

7073
virtual void setVoIPEnabled(bool enabled);
7174
virtual bool isVoIPEnabled();

src/async/imap/MCIMAPAsyncSession.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,20 @@ bool IMAPAsyncSession::isCheckCertificateEnabled()
192192
return mCheckCertificateEnabled;
193193
}
194194

195+
void IMAPAsyncSession::setEnableMalformedAddressHack(bool enabled)
196+
{
197+
mEnableMalformedAddressHack = enabled;
198+
for(unsigned int i = 0 ; i < mSessions->count() ; i ++) {
199+
IMAPAsyncConnection * connection = (IMAPAsyncConnection *) mSessions->objectAtIndex(i);
200+
connection->setEnableMalformedAddressHack(enabled);
201+
}
202+
}
203+
204+
bool IMAPAsyncSession::enableMalformedAddressHack()
205+
{
206+
return mEnableMalformedAddressHack;
207+
}
208+
195209
void IMAPAsyncSession::setVoIPEnabled(bool enabled)
196210
{
197211
mVoIPEnabled = enabled;
@@ -352,6 +366,7 @@ IMAPAsyncConnection * IMAPAsyncSession::availableSession()
352366
if ((mMaximumConnections == 0) || (mSessions->count() < mMaximumConnections)) {
353367
chosenSession = session();
354368
mSessions->addObject(chosenSession);
369+
chosenSession->setEnableMalformedAddressHack(mEnableMalformedAddressHack);
355370
return chosenSession;
356371
}
357372

src/async/imap/MCIMAPAsyncSession.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ namespace mailcore {
7878

7979
virtual void setCheckCertificateEnabled(bool enabled);
8080
virtual bool isCheckCertificateEnabled();
81+
82+
virtual void setEnableMalformedAddressHack(bool enabled);
83+
virtual bool enableMalformedAddressHack();
8184

8285
virtual void setVoIPEnabled(bool enabled);
8386
virtual bool isVoIPEnabled();
@@ -207,6 +210,7 @@ namespace mailcore {
207210
ConnectionType mConnectionType;
208211
bool mCheckCertificateEnabled;
209212
bool mVoIPEnabled;
213+
bool mEnableMalformedAddressHack;
210214
IMAPNamespace * mDefaultNamespace;
211215
time_t mTimeout;
212216
bool mAllowsFolderConcurrentAccessEnabled;

src/core/imap/MCIMAPSession.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,19 @@ bool IMAPSession::isCheckCertificateEnabled()
529529
return mCheckCertificateEnabled;
530530
}
531531

532+
void IMAPSession::setEnableMalformedAddressHack(bool enabled)
533+
{
534+
malformedAddressWorkaroundEnabled = enabled;
535+
#ifdef LIBETPAN_HAS_MALFORMED_ADDRESS_HACK
536+
mailimap_set_malformed_address_workaround_enabled(mImap, enabled);
537+
#endif
538+
}
539+
540+
bool IMAPSession::enableMalformedAddressHack()
541+
{
542+
return malformedAddressWorkaroundEnabled;
543+
}
544+
532545
void IMAPSession::setVoIPEnabled(bool enabled)
533546
{
534547
mVoIPEnabled = enabled;
@@ -616,6 +629,9 @@ void IMAPSession::setup()
616629
mailimap_set_timeout(mImap, timeout());
617630
mailimap_set_progress_callback(mImap, body_progress, IMAPSession::items_progress, this);
618631
mailimap_set_logger(mImap, logger, this);
632+
#ifdef LIBETPAN_HAS_MALFORMED_ADDRESS_HACK
633+
mailimap_set_malformed_address_workaround_enabled(mImap, malformedAddressWorkaroundEnabled);
634+
#endif
619635
}
620636

621637
void IMAPSession::unsetup()

src/core/imap/MCIMAPSession.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ namespace mailcore {
5555

5656
virtual void setCheckCertificateEnabled(bool enabled);
5757
virtual bool isCheckCertificateEnabled();
58+
59+
virtual void setEnableMalformedAddressHack(bool enabled);
60+
virtual bool enableMalformedAddressHack();
5861

5962
virtual void setVoIPEnabled(bool enabled);
6063
virtual bool isVoIPEnabled();
@@ -276,6 +279,7 @@ namespace mailcore {
276279
bool mRamblerRuServer;
277280
bool mHermesServer;
278281
bool mQipServer;
282+
bool malformedAddressWorkaroundEnabled;
279283

280284
unsigned int mLastFetchedSequenceNumber;
281285
String * mCurrentFolder;

src/objc/imap/MCOIMAPSession.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@
105105
/** Does the server support QRESYNC */
106106
@property (nonatomic, assign, readonly) BOOL isQResyncEnabled;
107107

108+
/** Enables or disables the malformed address hack for this session */
109+
@property (nonatomic, assign) BOOL enableMalformedAddressHack;
110+
108111
/**
109112
Display name of the Gmail user. It will be nil if it's not a Gmail server.
110113

src/objc/imap/MCOIMAPSession.mm

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,16 @@ - (MCOIMAPNamespace *) defaultNamespace
119119
return MCO_TO_OBJC(_session->defaultNamespace());
120120
}
121121

122+
- (void) setEnableMalformedAddressHack:(BOOL)enabled
123+
{
124+
_session->setEnableMalformedAddressHack(enabled);
125+
}
126+
127+
- (BOOL)enableMalformedAddressHack
128+
{
129+
return _session->enableMalformedAddressHack();
130+
}
131+
122132
- (MCOIMAPIdentity *) clientIdentity
123133
{
124134
return MCO_OBJC_BRIDGE_GET(clientIdentity);

0 commit comments

Comments
 (0)