From 6ff3c7a1ba680506d77fc1fe8dfbf5b804a3fea7 Mon Sep 17 00:00:00 2001 From: Galen Abell Date: Tue, 3 Mar 2020 08:45:06 -0500 Subject: Mark sent messages as "seen" in maildir - Add maildir flags to complement a messages imap flags - Set the "seen" flag on sent messages when using the maildir backend - Cleanup AppendMessage interface to use models.Flag for both IMAP and maildir --- worker/maildir/worker.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'worker/maildir/worker.go') diff --git a/worker/maildir/worker.go b/worker/maildir/worker.go index 17123c6..2f96e6f 100644 --- a/worker/maildir/worker.go +++ b/worker/maildir/worker.go @@ -337,7 +337,7 @@ func (w *Worker) sort(uids []uint32, criteria []*types.SortCriterion) ([]uint32, func (w *Worker) handleCreateDirectory(msg *types.CreateDirectory) error { dir := w.c.Dir(msg.Directory) - if err := dir.Create(); err != nil { + if err := dir.Init(); err != nil { w.worker.Logger.Printf("could not create directory %s: %v", msg.Directory, err) return err @@ -510,15 +510,16 @@ func (w *Worker) handleCopyMessages(msg *types.CopyMessages) error { } func (w *Worker) handleAppendMessage(msg *types.AppendMessage) error { + // since we are the "master" maildir process, we can modify the maildir directly dest := w.c.Dir(msg.Destination) - delivery, err := dest.NewDelivery() + _, writer, err := dest.Create(translateFlags(msg.Flags)) if err != nil { - w.worker.Logger.Printf("could not deliver message to %s: %v", + w.worker.Logger.Printf("could not create message at %s: %v", msg.Destination, err) return err } - defer delivery.Close() - if _, err := io.Copy(delivery, msg.Reader); err != nil { + defer writer.Close() + if _, err := io.Copy(writer, msg.Reader); err != nil { w.worker.Logger.Printf("could not write message to destination: %v", err) return err } -- cgit v1.2.3