~sircmpwn/aerc

This thread contains a patchset. You're looking at the original emails, but you may wish to use the patch review UI. Review patch
1

[PATCH] commands/account: Disable :view for deleted msgs

Details
Message ID
<20191110232235.110478-1-keur@xcf.berkeley.edu>
DKIM signature
missing
Download raw message
Patch: +2 -1
Allowing the user to view deleted messages creates all sorts of race
conditions. The most devious race condition is pv.source can be set to a
nil while another PartViewer is still running a goroutine in
attemptCopy.

Here is a trace when this happens.

goroutine 76 [running]: io.copyBuffer(0x7f8ad02641d0, 0xc00040f590, 0x0,
0x0, 0xc0007cc000, 0x8000, 0x8000, 0x0, 0x0, 0x8b3d60)
/usr/lib/go/src/io/io.go:402 +0x101 io.Copy(...)
/usr/lib/go/src/io/io.go:364
git.sr.ht/~sircmpwn/aerc/widgets.(*PartViewer).attemptCopy.func4(0xc00017efd0,
0xc0004da7c0) /home/keur/repos/aerc/widgets/msgviewer.go:576 +0x611
created by git.sr.ht/~sircmpwn/aerc/widgets.(*PartViewer).attemptCopy
/home/keur/repos/aerc/widgets/msgviewer.go:544 +0x144

We could add a guard in store.FetchBodyPart to only call the callback
when msg.Part.Reader != nil, but we still get a hanging pager. Therefore
it seems more reasonable to disable this completely.

Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
---
 commands/account/view.go | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/commands/account/view.go b/commands/account/view.go
index af39360..b287406 100644
--- a/commands/account/view.go
+++ b/commands/account/view.go
@@ -30,7 +30,8 @@ func (ViewMessage) Execute(aerc *widgets.Aerc, args []string) error {
 	}
 	store := acct.Messages().Store()
 	msg := acct.Messages().Selected()
-	if msg == nil {
+	_, deleted := store.Deleted[msg.Uid]
+	if msg == nil || deleted {
 		return nil
 	}
 	viewer := widgets.NewMessageViewer(acct, aerc.Config(), store, msg)
--
2.24.0
Details
Message ID
<BYIDR7XU0NUU.3VXYQPPHYXTTH@homura>
In-Reply-To
<20191110232235.110478-1-keur@xcf.berkeley.edu> (view parent)
DKIM signature
pass
Download raw message
Thanks!

To git.sr.ht:~sircmpwn/aerc
   8a84830..3338dce  master -> master