mail_daemon: IMAP delete messages on the server only when delete_remote_when_local setting is set
Change-Id: I88fcc7a185cede080af7c3b85f9466a02f895809 Reviewed-on: https://review.haiku-os.org/674 Reviewed-by: Stephan Aßmus <superstippi@gmx.de>
This commit is contained in:
parent
7c96721b51
commit
eef12cec97
@ -247,7 +247,8 @@ IMAPFolder::SyncMessageFlags(uint32 uid, uint32 mailboxFlags)
|
||||
// The message does not exist anymore locally, delete it on the
|
||||
// server
|
||||
// TODO: copy it to the trash directory first!
|
||||
fProtocol.UpdateMessageFlags(*this, uid, IMAP::kDeleted);
|
||||
if (fProtocol.Settings()->DeleteRemoteWhenLocal())
|
||||
fProtocol.UpdateMessageFlags(*this, uid, IMAP::kDeleted);
|
||||
return;
|
||||
}
|
||||
if (status == B_OK)
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
read_flags flags = B_READ);
|
||||
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
const ::Settings* Settings() const { return &fSettings; };
|
||||
|
||||
protected:
|
||||
virtual status_t HandleFetchBody(const entry_ref& ref,
|
||||
@ -66,7 +67,7 @@ protected:
|
||||
typedef std::map<IMAPFolder*, IMAPConnectionWorker*> WorkerMap;
|
||||
typedef std::map<ino_t, IMAPFolder*> FolderNodeMap;
|
||||
|
||||
Settings fSettings;
|
||||
::Settings fSettings;
|
||||
mutex fWorkerLock;
|
||||
BObjectList<IMAPConnectionWorker> fWorkers;
|
||||
WorkerMap fWorkerMap;
|
||||
@ -75,4 +76,4 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
#endif // IMAP_PROTOCOL_H
|
||||
#endif // IMAP_PROTOCOL_H
|
@ -108,3 +108,9 @@ Settings::BodyFetchLimit() const
|
||||
{
|
||||
return fMessage.GetInt32("partial_download_limit", -1);
|
||||
}
|
||||
|
||||
bool
|
||||
Settings::DeleteRemoteWhenLocal() const
|
||||
{
|
||||
return fMessage.FindBool("delete_remote_when_local");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user