Fork of the aerc email client (https://sr.ht/~rjarry/aerc)
Go to file
Kiril Vladimiroff d9a0522780 Break early when delete happens in outdated state
A panic could happen when multiple delete messages are sent one after
another without waiting until there are no messages left to be deleted:

	panic: runtime error: makeslice: len out of range

	goroutine 1 [running]:
	git.sr.ht/~sircmpwn/aerc/lib.(*MessageStore).Update(0xc000592e00, 0xa8fe60, 0xc0003340f0)
		/go/src/git.sr.ht/~sircmpwn/aerc/lib/msgstore.go:222 +0x5b8
	git.sr.ht/~sircmpwn/aerc/widgets.(*AccountView).onMessage(0xc0000a0460, 0xa8fe60, 0xc0003340f0)
		/go/src/git.sr.ht/~sircmpwn/aerc/widgets/account.go:251 +0x307
	git.sr.ht/~sircmpwn/aerc/widgets.(*AccountView).Tick(0xc0000a0460, 0xc0001496b0)
		/go/src/git.sr.ht/~sircmpwn/aerc/widgets/account.go:90 +0xa1
	git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).Tick(0xc0000a9f40, 0xc000020501)
		/go/src/git.sr.ht/~sircmpwn/aerc/widgets/aerc.go:123 +0x91
	main.main()
		/go/src/git.sr.ht/~sircmpwn/aerc/aerc.go:182 +0x5bf

The make that blows up is:

	uids := make([]uint32, len(store.uids)-len(msg.Uids))

This change simply checks whether the make is going to be valid before
starting to work on the actual delete. If there are more messages queued
to be deleted than what's left in the store, then we're obviously in an
inconsistent state, ask for an update and break.
2019-12-12 12:29:39 -05:00
commands failback to Content-Type filename when encoded Content-Disposition is used 2019-12-07 14:30:35 -05:00
config Add custom sorting for folders 2019-12-09 12:42:40 -05:00
doc Add custom sorting for folders 2019-12-09 12:42:40 -05:00
filters Strip carriage returns (^M) when filtering emails 2019-08-20 16:05:20 +09:00
lib Break early when delete happens in outdated state 2019-12-12 12:29:39 -05:00
models Factor IMAP-specific structs out of UI models 2019-07-08 16:06:28 -04:00
templates Correct capitalization in quoted_reply 2019-11-10 13:36:25 -05:00
widgets Composer: fix EOF errors 2019-12-12 10:22:28 -05:00
worker decode(RFC 2047) imap headers to fix encoding in subject & filenames 2019-12-07 14:30:33 -05:00
.build.yml Add .build.yml 2019-07-07 18:51:51 -04:00
.gitignore Subsitute prefix in aerc.conf for install 2019-05-26 10:27:22 -04:00
LICENSE Add README.md, update license (MIT -2019) 2019-01-13 20:09:07 -05:00
Makefile fix make install directiories permissions 2019-12-07 14:29:57 -05:00
README.md Add notmuch docs 2019-08-08 10:11:20 +09:00
aerc.go Open mailto links in a new aerc instance if needed. 2019-09-29 12:36:35 -04:00
go.mod Add support for AUTH LOGIN submission 2019-11-01 11:02:01 -04:00
go.sum Add support for AUTH LOGIN submission 2019-11-01 11:02:01 -04:00

README.md

aerc

aerc is an email client for your terminal.

Join the IRC channel: #aerc on irc.freenode.net for end-user support, and #aerc-dev for development.

Building

Install the dependencies:

  • go (>=1.12)
  • scdoc

Then compile aerc:

$ make

aerc optionally supports notmuch. To enable it, you need to have a recent version of notmuch, including the header files (notmuch.h). Then compile aerc with the necessary build tags:

$ GOFLAGS=-tags=notmuch make

Installation

# make install
$ aerc

On its first run, aerc will copy the default config files to ~/.config/aerc and show the account configuration wizard.

If you redirect stdout to a file, logging output will be written to that file:

$ aerc > log

Resources

Send patches and questions to ~sircmpwn/aerc@lists.sr.ht.

Subscribe to release announcements on ~sircmpwn/aerc-announce

Bugs & todo here: ~sircmpwn/aerc2