imap: fix flags update

Fixes updating the flags in the imap backend. Before, the silent flag
was set incorrectly by 75fc42e ("imap: send message info updates for
bulk flag ops") which caused some imap servers to not send the updated
flags. By disabling the silent flag, the flag update will return a
corrsponding value that we can send back to the message store to update
the flags correctly.

Fixes: 75fc42e ("imap: send message info updates for bulk flag ops")
Reported-by: Jens Grassel <jens@wegtam.com>
Signed-off-by: Koni Marti <koni.marti@gmail.com>
Tested-by: Jens Grassel <jens@wegtam.com>
Acked-by: Robin Jarry <robin@jarry.cc>
This commit is contained in:
Koni Marti 2022-10-04 10:08:19 +02:00 committed by Robin Jarry
parent d3b62dd3b0
commit d99b6081f7

View file

@ -30,10 +30,10 @@ func (imapw *IMAPWorker) handleDeleteMessages(msg *types.DeleteMessages) {
} }
func (imapw *IMAPWorker) handleAnsweredMessages(msg *types.AnsweredMessages) { func (imapw *IMAPWorker) handleAnsweredMessages(msg *types.AnsweredMessages) {
item := imap.FormatFlagsOp(imap.AddFlags, true) item := imap.FormatFlagsOp(imap.AddFlags, false)
flags := []interface{}{imap.AnsweredFlag} flags := []interface{}{imap.AnsweredFlag}
if !msg.Answered { if !msg.Answered {
item = imap.FormatFlagsOp(imap.RemoveFlags, true) item = imap.FormatFlagsOp(imap.RemoveFlags, false)
flags = []interface{}{imap.AnsweredFlag} flags = []interface{}{imap.AnsweredFlag}
} }
imapw.handleStoreOps(msg, msg.Uids, item, flags, imapw.handleStoreOps(msg, msg.Uids, item, flags,
@ -51,9 +51,9 @@ func (imapw *IMAPWorker) handleAnsweredMessages(msg *types.AnsweredMessages) {
func (imapw *IMAPWorker) handleFlagMessages(msg *types.FlagMessages) { func (imapw *IMAPWorker) handleFlagMessages(msg *types.FlagMessages) {
flags := []interface{}{flagToImap[msg.Flag]} flags := []interface{}{flagToImap[msg.Flag]}
item := imap.FormatFlagsOp(imap.AddFlags, true) item := imap.FormatFlagsOp(imap.AddFlags, false)
if !msg.Enable { if !msg.Enable {
item = imap.FormatFlagsOp(imap.RemoveFlags, true) item = imap.FormatFlagsOp(imap.RemoveFlags, false)
} }
imapw.handleStoreOps(msg, msg.Uids, item, flags, imapw.handleStoreOps(msg, msg.Uids, item, flags,
func(_msg *imap.Message) error { func(_msg *imap.Message) error {