diff options
author | Moritz Poldrack <git@moritz.sh> | 2022-09-13 13:50:35 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-09-14 00:03:01 +0200 |
commit | 37c1db2ab22b892cc41c8d663a359fc6ebe12e31 (patch) | |
tree | cd418d7f861d68238361d532b0d0942271772fd1 /lib/socket.go | |
parent | c947811e9f7a3421212287cbe9fce125aa059467 (diff) | |
download | aerc-37c1db2ab22b892cc41c8d663a359fc6ebe12e31.tar.gz |
socket: use existing socket if it is connected
When using ephemeral aerc sessions – for example while writing patches
for it – the mailto: functionality breaks if the socket is removed.
Try to send a ping (an empty message) to the socket and remove it, if
the send fails or no noop reply is received.
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Tim Culverhouse <tim@timculverhouse.com>
Diffstat (limited to 'lib/socket.go')
-rw-r--r-- | lib/socket.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/socket.go b/lib/socket.go index c83cc8a9..4da3485b 100644 --- a/lib/socket.go +++ b/lib/socket.go @@ -24,8 +24,10 @@ type AercServer struct { func StartServer() (*AercServer, error) { sockpath := path.Join(xdg.RuntimeDir(), "aerc.sock") - // remove the socket if it already exists - os.Remove(sockpath) + // remove the socket if it is not connected to a session + if err := ConnectAndExec(""); err != nil { + os.Remove(sockpath) + } logging.Infof("Starting Unix server: %s", sockpath) l, err := net.Listen("unix", sockpath) if err != nil { |