From 2f38db2da3ccd93d21fa8326bfdc6bd8b115ef70 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 11 Aug 2017 20:08:49 -0600 Subject: Replaying a change without remoteid is not going to work. --- examples/imapresource/imapresource.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'examples/imapresource/imapresource.cpp') diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index 81c808b..96055b4 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp @@ -619,6 +619,11 @@ public: KAsync::Job replay(const ApplicationDomain::Mail &mail, Sink::Operation operation, const QByteArray &oldRemoteId, const QList &changedProperties) Q_DECL_OVERRIDE { + if (operation != Sink::Operation_Creation) { + if(oldRemoteId.isEmpty()) { + return KAsync::error("Tried to replay modification without old remoteId."); + } + } auto imap = QSharedPointer::create(mServer, mPort, &mSessionCache); auto login = imap->login(mUser, mPassword); KAsync::Job job = KAsync::null(); -- cgit v1.2.3 From d87c789f311b7727d2db687e3891319e98ad6535 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 14 Aug 2017 09:03:24 -0600 Subject: Skip over revisions that we can't replay. --- examples/imapresource/imapresource.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'examples/imapresource/imapresource.cpp') diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index 96055b4..0c0c134 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp @@ -621,7 +621,11 @@ public: { if (operation != Sink::Operation_Creation) { if(oldRemoteId.isEmpty()) { - return KAsync::error("Tried to replay modification without old remoteId."); + // return KAsync::error("Tried to replay modification without old remoteId."); + qWarning() << "Tried to replay modification without old remoteId."; + // Since we can't recover from the situation we just skip over the revision. + // FIXME figure out how we can ever end up in this situation + return KAsync::null(); } } auto imap = QSharedPointer::create(mServer, mPort, &mSessionCache); -- cgit v1.2.3 From 1ba34f8b16cd06a74ff96dfae803ce4b0521652b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 28 Aug 2017 17:19:51 -0600 Subject: Detect connection lost so we can go to offline state kimap should really have better error codes... --- examples/imapresource/imapresource.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'examples/imapresource/imapresource.cpp') diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index 0c0c134..3ae7fd7 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp @@ -511,6 +511,8 @@ public: return {ApplicationDomain::LoginError, error.errorMessage}; case Imap::HostNotFoundError: return {ApplicationDomain::NoServerError, error.errorMessage}; + case Imap::ConnectionLost: + return {ApplicationDomain::ConnectionLostError, error.errorMessage}; default: return {ApplicationDomain::UnknownError, error.errorMessage}; } -- cgit v1.2.3