summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2011-05-30 15:20:43 +0300
committerDon Sanders <don.sanders@nokia.com>2011-05-30 15:20:43 +0300
commit05a39cb3c432cb7af32a8089caea04fbd831fe54 (patch)
tree8d92298970ee24ade791f2f61ef37cfda2e2777f
parent27bc9f7361d89c32b3a4de9e3725ca6c080a6fda (diff)
::sync on client before removing mail from external POP server.
Only for POP accounts and only when the configuration option delete mail from server when retrieved by client is enabled.
-rw-r--r--src/plugins/messageservices/pop/popclient.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/plugins/messageservices/pop/popclient.cpp b/src/plugins/messageservices/pop/popclient.cpp
index b073b5fa..758ffc95 100644
--- a/src/plugins/messageservices/pop/popclient.cpp
+++ b/src/plugins/messageservices/pop/popclient.cpp
@@ -50,8 +50,10 @@
#include <qmailtransport.h>
#include <qmaillog.h>
#include <qmaildisconnected.h>
-
#include <limits.h>
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+#include <unistd.h>
+#endif
class MessageFlushedWrapper : public QMailMessageBufferFlushCallback
@@ -753,7 +755,14 @@ void PopClient::nextAction()
{
PopConfiguration popCfg(config);
if (popCfg.deleteRetrievedMailsFromServer()) {
- int pos = msgPosFromUidl(messageUid);
+ // Now that sqlite WAL is used, make sure mail metadata is sync'd
+ // on device before removing from external mail server
+#if defined(Q_OS_WIN) || defined (Q_OS_SYMBIAN)
+ qWarning() << "Unable to call sync in POP plugin.";
+#else
+ ::sync();
+#endif
+ int pos = msgPosFromUidl(messageUid);
emit updateStatus(tr("Removing message from server"));
nextCommand = ("DELE " + QString::number(pos));
nextStatus = DeleAfterRetr;