aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ipc/receive.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ipc/receive.go')
-rw-r--r--lib/ipc/receive.go8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/ipc/receive.go b/lib/ipc/receive.go
index 47ffa89f..dbacc660 100644
--- a/lib/ipc/receive.go
+++ b/lib/ipc/receive.go
@@ -2,6 +2,7 @@ package ipc
import (
"bufio"
+ "context"
"errors"
"net"
"net/url"
@@ -20,9 +21,10 @@ import (
type AercServer struct {
listener net.Listener
handler Handler
+ startup context.Context
}
-func StartServer(handler Handler) (*AercServer, error) {
+func StartServer(handler Handler, startup context.Context) (*AercServer, error) {
sockpath := xdg.RuntimePath("aerc.sock")
// remove the socket if it is not connected to a session
if err := ConnectAndExec(nil); err != nil {
@@ -33,7 +35,7 @@ func StartServer(handler Handler) (*AercServer, error) {
if err != nil {
return nil, err
}
- as := &AercServer{listener: l, handler: handler}
+ as := &AercServer{listener: l, handler: handler, startup: startup}
go as.Serve()
return as, nil
@@ -48,6 +50,8 @@ var lastId int64 = 0 // access via atomic
func (as *AercServer) Serve() {
defer log.PanicHandler()
+ <-as.startup.Done()
+
for {
conn, err := as.listener.Accept()
switch {