~rjarry/aerc-devel

aerc: ipc: fix deadlock when aerc is not running v1 APPLIED

Robin Jarry: 1
 ipc: fix deadlock when aerc is not running

 1 files changed, 7 insertions(+), 4 deletions(-)
#1153646 alpine-edge.yml success
#1153647 openbsd.yml success
Tim Culverhouse, Feb 22, 2024 at 21:50:
Next
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~rjarry/aerc-devel/patches/49684/mbox | git am -3
Learn more about email & git

[PATCH aerc] ipc: fix deadlock when aerc is not running Export this patch

Defer the execution of failed IPC commands *after* the IPC socket has
been unblocked.

Fixes: fd4dd4240885 ("ipc: wait for app to be ready before accepting commands")
Fixes: https://todo.sr.ht/~rjarry/aerc/229
Reported-by: Skejg <grolleman@zoho.com>
Signed-off-by: Robin Jarry <robin@jarry.cc>
---
 main.go | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/main.go b/main.go
index 4cc8d2034e9b..85538311011e 100644
--- a/main.go
+++ b/main.go
@@ -164,7 +164,6 @@ func main() {
		if err == nil {
			return // other aerc instance takes over
		}
		fmt.Fprintf(os.Stderr, "Failed to communicate to aerc: %v\n", err)
		// continue with setting up a new aerc instance and retry after init
		retryExec = true
	}
@@ -211,7 +210,11 @@ func main() {
	// set the aerc version so that we can use it in the template funcs
	templates.SetVersion(Version)

	if retryExec {
	enableIpc := func() {
		startupDone()
		if !retryExec {
			return
		}
		// retry execution
		err := ipc.ConnectAndExec(opts.Command)
		if err != nil {
@@ -220,7 +223,7 @@ func main() {
			if err != nil {
				log.Warnf("failed to close backends: %v", err)
			}
			return
			os.Exit(1)
		}
	}

@@ -253,7 +256,7 @@ loop:
			// it will be ready. And in some cases, it may never be.
			// At least, we can be confident that accepting IPC
			// commands will not crash the whole process.
			once.Do(startupDone)
			once.Do(enableIpc)
		case callback := <-ui.Callbacks:
			callback()
		case <-ui.Redraw:
-- 
2.43.0
aerc/patches: SUCCESS in 2m35s

[ipc: fix deadlock when aerc is not running][0] from [Robin Jarry][1]

[0]: https://lists.sr.ht/~rjarry/aerc-devel/patches/49684
[1]: mailto:robin@jarry.cc

✓ #1153647 SUCCESS aerc/patches/openbsd.yml     https://builds.sr.ht/~rjarry/job/1153647
✓ #1153646 SUCCESS aerc/patches/alpine-edge.yml https://builds.sr.ht/~rjarry/job/1153646