diff options
author | Robin Jarry <robin@jarry.cc> | 2022-02-04 09:14:53 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-02-06 16:04:15 +0100 |
commit | a46468521bf8a6d7f6f0d8f0728eb99d599d2ccf (patch) | |
tree | 5f535acde5f515a369cb43b73e4be786a4ad3024 /worker | |
parent | 9fba8d9cbd4d8543fd35bddc0d64cc6f1a96ce00 (diff) | |
download | aerc-a46468521bf8a6d7f6f0d8f0728eb99d599d2ccf.zip |
imap: do not abort on malformed messages
Some messages contain invalid headers, textproto.ReadHeader fails with
an error:
malformed MIME header key: From nobody Fri Jan 14 19
And all other messages of the selected folder are ignored.
Return an explicit error message to the UI and continue processing other
messages. This is consistent with what the maildir worker does.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'worker')
-rw-r--r-- | worker/imap/fetch.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/worker/imap/fetch.go b/worker/imap/fetch.go index c63ee42..19f4fa3 100644 --- a/worker/imap/fetch.go +++ b/worker/imap/fetch.go @@ -38,7 +38,13 @@ func (imapw *IMAPWorker) handleFetchMessageHeaders( reader := _msg.GetBody(section) textprotoHeader, err := textproto.ReadHeader(bufio.NewReader(reader)) if err != nil { - return fmt.Errorf("could not read header: %v", err) + imapw.worker.Logger.Printf( + "message %v: could not read header: %v", _msg.Uid, err) + imapw.worker.PostMessage(&types.Error{ + Message: types.RespondTo(msg), + Error: err, + }, nil) + return nil } header := &mail.Header{message.Header{textprotoHeader}} imapw.worker.PostMessage(&types.MessageInfo{ |