diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp index b800a657f6..b4d642aff8 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp @@ -199,14 +199,14 @@ MailboxWatcher::MessageReceived(BMessage* message) message->FindInt64("directory", &ref.directory); message->FindString("name", &name); ref.set_name(name); - //TODO not thread safe + fProtocol->AppendMessage(ref); break; case B_ENTRY_REMOVED: message->FindInt32("device", &nref.device); message->FindInt64("node", &nref.node); - //TODO not thread safe + fProtocol->DeleteMessage(nref); break; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp index ddea42dbac..de6a8d8fc6 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp @@ -394,7 +394,7 @@ FetchMessageCommand::Handle(const BString& response) BString headerSize = IMAPParser::RemovePrimitiveFromLeft(extracted); headerSize = IMAPParser::ExtractNextElement(headerSize); int32 size = atoi(headerSize); - TRACE("Header size %i\n", (int)size); + status_t status = fConnectionReader.ReadToFile(size, data); if (status != B_OK) { if (!fOutData) 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 3c4e8c66ea..74c88d0f24 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 @@ -170,7 +170,7 @@ IMAPStorage::AddNewMessage(int32 uid, int32 flags, BPositionIO** file) BPath filePath = fMailboxPath; filePath.Append(fileName); - TRACE("file name %s\n", filePath.Path()); + TRACE("AddNewMessage %s\n", filePath.Path()); BFile* newFile = new BFile(filePath.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); if (newFile == NULL) @@ -238,7 +238,8 @@ IMAPStorage::DeleteMessage(int32 uid) BPath filePath = fMailboxPath; filePath.Append(storageEntry.fileName); BEntry entry(filePath.Path()); -TRACE("delete %s\n", filePath.Path()); + TRACE("IMAPStorage::DeleteMessage %s, %ld\n", filePath.Path(), uid); + status_t status = entry.Remove(); if (status != B_OK) return status; @@ -439,8 +440,11 @@ IMAPStorage::_ReadFilesThread() StorageMailEntry entry; entry.fileName = ref.name; - if (ReadUniqueID(node, entry.uid) != B_OK) + if (ReadUniqueID(node, entry.uid) != B_OK) { + TRACE("IMAPStorage::_ReadFilesThread() failed to read uid %s\n", + ref.name); continue; + } if (node.ReadAttr("MAIL:server_flags", B_INT32_TYPE, 0, &entry.flags, sizeof(int32)) != sizeof(int32)) @@ -475,9 +479,11 @@ IMAPStorage::_WriteFlags(int32 flags, BNode& node) status_t IMAPStorage::ReadUniqueID(BNode& node, int32& uid) { - char uidString[256]; + const uint32 kMaxUniqueLength = 32; + char uidString[kMaxUniqueLength]; + memset(uidString, 0, kMaxUniqueLength); if (node.ReadAttr("MAIL:unique_id", B_STRING_TYPE, 0, uidString, - 256) < 0) + kMaxUniqueLength) < 0) return B_ERROR; uid = atoi(uidString); return B_OK;