From 4ee7dfd9712c4ec7ef46a910b537cbd360194609 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Mon, 21 Feb 2011 23:10:19 +0000 Subject: [PATCH] Write status attributes correctly again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40604 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../inbound_protocols/imap/imap_lib/IMAPStorage.cpp | 7 ++++++- src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp | 4 ++++ src/kits/mail/HaikuMailFormatFilter.cpp | 2 -- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp index 2b5f29f750..6ae12fb741 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include "IMAPMailbox.h" @@ -463,6 +463,11 @@ IMAPStorage::_ReadFilesThread() status_t IMAPStorage::_WriteFlags(int32 flags, BNode& node) { + if ((flags & kSeen) != 0) + write_read_attr(node, B_READ); + else + write_read_attr(node, B_UNREAD); + ssize_t writen = node.WriteAttr("MAIL:server_flags", B_INT32_TYPE, 0, &flags, sizeof(int32)); if (writen != sizeof(int32)) diff --git a/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp b/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp index 3c0aba613f..c4940b48fc 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp @@ -185,6 +185,10 @@ POP3Protocol::SyncMessages() entry_ref ref; entry.GetRef(&ref); + // the ref becomes invalid after renaming the file thus we already + // write the status here + MarkMessageAsRead(ref, B_UNREAD); + int32 size = MessageSize(toRetrieve); if (fFetchBodyLimit < 0 || size <= fFetchBodyLimit) { error = mailIO.Seek(0, SEEK_END); diff --git a/src/kits/mail/HaikuMailFormatFilter.cpp b/src/kits/mail/HaikuMailFormatFilter.cpp index 88efba3d45..99418e7850 100644 --- a/src/kits/mail/HaikuMailFormatFilter.cpp +++ b/src/kits/mail/HaikuMailFormatFilter.cpp @@ -64,8 +64,6 @@ HaikuMailFormatFilter::HaikuMailFormatFilter(MailProtocol& protocol, void HaikuMailFormatFilter::HeaderFetched(const entry_ref& ref, BFile* file) { - write_read_attr(*file, B_UNREAD); - file->Seek(0, SEEK_SET); BMessage attributes;