summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2012-04-18 10:25:08 +0300
committerDon Sanders <don.sanders@nokia.com>2012-04-18 10:25:08 +0300
commit95f1a59d047f6958dc4fee1d64a2ccf650202325 (patch)
treeaf2f2253b78853a9f3d54469d297a488d462fe3c
parente24c0d1fa1ced608df2056d1215f56c30c234f75 (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.cpp10
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),