summaryrefslogtreecommitdiff
path: root/lib/messageview.go
diff options
context:
space:
mode:
authorRay Ganardi <ray@ganardi.xyz>2020-05-19 13:06:46 +0200
committerDrew DeVault <sir@cmpwn.com>2020-05-25 09:30:20 -0400
commit58db517c8d79c7fd8897d8ab5d5cf9c2de67a071 (patch)
tree775b2d74bda2ea10795b9dffa60afb66c36a90b8 /lib/messageview.go
parent83e7c7661dfe42e75641d764d713d144c2d7c6ce (diff)
downloadaerc-58db517c8d79c7fd8897d8ab5d5cf9c2de67a071.zip
pgp: fail gracefully from email decryption
Aerc panics when there's an error on email decryption. Instead, an error message should be shown.
Diffstat (limited to 'lib/messageview.go')
-rw-r--r--lib/messageview.go18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/messageview.go b/lib/messageview.go
index 59a1af6..384a947 100644
--- a/lib/messageview.go
+++ b/lib/messageview.go
@@ -59,7 +59,7 @@ type MessageStoreView struct {
func NewMessageStoreView(messageInfo *models.MessageInfo,
store *MessageStore, decryptKeys openpgp.PromptFunction,
- cb func(MessageView)) {
+ cb func(MessageView, error)) {
msv := &MessageStoreView{messageInfo, store,
nil, nil, messageInfo.BodyStructure}
@@ -69,26 +69,30 @@ func NewMessageStoreView(messageInfo *models.MessageInfo,
reader := fm.Content.Reader
pgpReader, err := pgpmail.Read(reader, Keyring, decryptKeys, nil)
if err != nil {
- panic(err)
+ cb(nil, err)
+ return
}
msv.message, err = ioutil.ReadAll(pgpReader.MessageDetails.UnverifiedBody)
if err != nil {
- panic(err)
+ cb(nil, err)
+ return
}
decrypted, err := message.Read(bytes.NewBuffer(msv.message))
if err != nil {
- panic(err)
+ cb(nil, err)
+ return
}
bs, err := lib.ParseEntityStructure(decrypted)
if err != nil {
- panic(err)
+ cb(nil, err)
+ return
}
msv.bodyStructure = bs
msv.details = pgpReader.MessageDetails
- cb(msv)
+ cb(msv, nil)
})
} else {
- cb(msv)
+ cb(msv, nil)
}
store.Read([]uint32{messageInfo.Uid}, true, nil)
}