diff options
author | Don Sanders <don.sanders@nokia.com> | 2012-04-03 13:18:26 +0300 |
---|---|---|
committer | Don Sanders <don.sanders@nokia.com> | 2012-04-03 13:18:26 +0300 |
commit | 20c1040af9702082425300886c929aef01047f1b (patch) | |
tree | 4fa442d85a3794e569edeff8e5d6c18367cdc660 | |
parent | dd2c141ad233c61e280b7b33e4d69bd61bb4245f (diff) |
Ensure temporary files are deleted.
Patch from Edit Siket-Szasz
-rw-r--r-- | src/plugins/messageservices/imap/imapclient.cpp | 13 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapclient.h | 2 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapstrategy.cpp | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/messageservices/imap/imapclient.cpp b/src/plugins/messageservices/imap/imapclient.cpp index e0a38f35..52226570 100644 --- a/src/plugins/messageservices/imap/imapclient.cpp +++ b/src/plugins/messageservices/imap/imapclient.cpp @@ -1307,6 +1307,8 @@ void ImapClient::dataFetched(const QString &uid, const QString §ion, const Q mail = new QMailMessage(uid, _config.id()); } + detachedTempFiles.insertMulti(mail->id(),fileName); + if (mail->id().isValid()) { if (section.isEmpty()) { // This is the body of the message, or a part thereof @@ -1408,6 +1410,7 @@ void ImapClient::dataFetched(const QString &uid, const QString §ion, const Q // These updates cannot be effected by storing the data file directly if (!mail->customField("qmf-detached-filename").isEmpty()) { + QFile::remove(mail->customField("qmf-detached-filename")); mail->removeCustomField("qmf-detached-filename"); } } @@ -1728,6 +1731,16 @@ void ImapClient::messageBufferFlushed() void ImapClient::removeAllFromBuffer(QMailMessage *message) { + if (message) { + QMap<QMailMessageId, QString>::const_iterator i = detachedTempFiles.find(message->id()); + while (i != detachedTempFiles.end() && i.key() == message->id()) { + if (!(*i).isEmpty() && QFile::exists(*i)) { + QFile::remove(*i); + } + ++i; + } + detachedTempFiles.remove(message->id()); + } int i = 0; while ((i = _bufferedMessages.indexOf(message, i)) != -1) { delete _bufferedMessages.at(i); diff --git a/src/plugins/messageservices/imap/imapclient.h b/src/plugins/messageservices/imap/imapclient.h index fd5e6a58..3e7bfec4 100644 --- a/src/plugins/messageservices/imap/imapclient.h +++ b/src/plugins/messageservices/imap/imapclient.h @@ -179,6 +179,8 @@ private: QList<QMailMessageBufferFlushCallback*> callbacks; QVector<QMailMessage*> _bufferedMessages; int _pushConnectionsReserved; + + QMap<QMailMessageId,QString> detachedTempFiles; }; #endif diff --git a/src/plugins/messageservices/imap/imapstrategy.cpp b/src/plugins/messageservices/imap/imapstrategy.cpp index 15141a98..78e9b0c8 100644 --- a/src/plugins/messageservices/imap/imapstrategy.cpp +++ b/src/plugins/messageservices/imap/imapstrategy.cpp @@ -283,6 +283,7 @@ bool transferMessageData(QMailMessage &message, const QMailMessage &source) if (!message.customField("qmf-detached-filename").isEmpty()) { // We have modified the content, so the detached file data is no longer sufficient + QFile::remove(message.customField("qmf-detached-filename")); message.removeCustomField("qmf-detached-filename"); } |