diff options
author | Don Sanders <don.sanders@nokia.com> | 2012-04-18 10:25:08 +0300 |
---|---|---|
committer | Don Sanders <don.sanders@nokia.com> | 2012-04-18 10:25:08 +0300 |
commit | 95f1a59d047f6958dc4fee1d64a2ccf650202325 (patch) | |
tree | af2f2253b78853a9f3d54469d297a488d462fe3c | |
parent | e24c0d1fa1ced608df2056d1215f56c30c234f75 (diff) |
FWOD fix, don't try to upload email twice to remote server
When sending a forward without download message, with a sent
folder on the server, a second spurious attempt was being made
to APPEND the message into the sent folder on the server. (Test
server ignored the spurious append, so no error was detected).
So fix this, checked for regressions in 4 cases:
Forward without download with sent folder on server.
Forward without download without sent folder on server.
Normal sending (non-fwod) with sent folder on server.
Normal sending without sent folder on server.
-rw-r--r-- | src/tools/messageserver/servicehandler.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/tools/messageserver/servicehandler.cpp b/src/tools/messageserver/servicehandler.cpp index 143665b3..7cd0912e 100644 --- a/src/tools/messageserver/servicehandler.cpp +++ b/src/tools/messageserver/servicehandler.cpp @@ -2735,8 +2735,14 @@ void ServiceHandler::actionCompleted(bool success, QMailMessageService *service, qWarning() << "Unable to flag messages:" << mSentIds; } - QMap<QMailAccountId, QMailMessageIdList> groupedMessages(accountMessages(mSentIds)); - + // FWOD messages have already been uploaded to the remote server, don't try to upload twice + quint64 externalStatus(QMailMessage::TransmitFromExternal | QMailMessage::HasUnresolvedReferences); + QMailMessageKey externalKey(QMailMessageKey::status(externalStatus, QMailDataComparator::Includes)); + QMailMessageKey sentIdsKey(QMailMessageKey::id(mSentIds)); + QMailMessageIdList sentNonFwodIds = QMailStore::instance()->queryMessages(sentIdsKey & ~externalKey); + + // Move sent messages to sent folder on remote server + QMap<QMailAccountId, QMailMessageIdList> groupedMessages(accountMessages(sentNonFwodIds)); if (!groupedMessages.empty()) { // messages are still around enqueueRequest(newLocalActionId(), serialize(groupedMessages, setMask, unsetMask), |