aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async
diff options
context:
space:
mode:
Diffstat (limited to 'src/async')
-rw-r--r--src/async/imap/MCIMAPIdleOperation.cc15
-rw-r--r--src/async/imap/MCIMAPIdleOperation.h2
2 files changed, 13 insertions, 4 deletions
diff --git a/src/async/imap/MCIMAPIdleOperation.cc b/src/async/imap/MCIMAPIdleOperation.cc
index 9006b570..42c58f90 100644
--- a/src/async/imap/MCIMAPIdleOperation.cc
+++ b/src/async/imap/MCIMAPIdleOperation.cc
@@ -16,6 +16,7 @@ using namespace mailcore;
IMAPIdleOperation::IMAPIdleOperation()
{
mLastKnownUid = 0;
+ mSetupSuccess = false;
}
IMAPIdleOperation::~IMAPIdleOperation()
@@ -34,18 +35,24 @@ uint32_t IMAPIdleOperation::lastKnownUID()
void IMAPIdleOperation::prepare()
{
- session()->session()->setupIdle();
+ mSetupSuccess = session()->session()->setupIdle();
}
void IMAPIdleOperation::unprepare()
{
- session()->session()->unsetupIdle();
+ if (mSetupSuccess) {
+ session()->session()->unsetupIdle();
+ }
}
void IMAPIdleOperation::main()
{
performMethodOnMainThread((Object::Method) &IMAPIdleOperation::prepare, NULL);
+ if (!mSetupSuccess) {
+ return;
+ }
+
ErrorCode error;
session()->session()->idle(folder(), mLastKnownUid, &error);
setError(error);
@@ -55,6 +62,8 @@ void IMAPIdleOperation::main()
void IMAPIdleOperation::interruptIdle()
{
- session()->session()->interruptIdle();
+ if (mSetupSuccess) {
+ session()->session()->interruptIdle();
+ }
}
diff --git a/src/async/imap/MCIMAPIdleOperation.h b/src/async/imap/MCIMAPIdleOperation.h
index 377014dd..de19469a 100644
--- a/src/async/imap/MCIMAPIdleOperation.h
+++ b/src/async/imap/MCIMAPIdleOperation.h
@@ -31,9 +31,9 @@ namespace mailcore {
private:
uint32_t mLastKnownUid;
+ bool mSetupSuccess;
void prepare();
void unprepare();
-
};
}