Subject: bug#43643: start shepherd when a previous instance was killed by kill -9

From: gfleury <[email-masked]>
Date: Sun, 27 Sep 2020 10:00:03 +0200

Hi,

when killing shepherd i.e `pkill -9 shepherd` it left behind
`default-socket-file` and when restarted whithout remove the socket like
---------------------------------------------------------
rm /var/run/user/1000/shepherd/socket
---------------------------------------------------------

it throws a error:
---------------------------------------------------------
3 (primitive-load "/home/gfleury/prod/shepherd/./shepherd")
In shepherd.scm:
    56:14  2 (main . _)
     49:6  1 (open-server-socket _)
In unknown file:
           0 (bind #<input-output: socket 16> #(1 "/run/user/1000?") #)

ERROR: In procedure bind:
In procedure bind: Address already in use
---------------------------------------------------------

something like this patch can fix it.
>From 7d16c47bad6fd98cf0838d2fcd62735d846e7bab Mon Sep 17 00:00:00 2001
From: gfleury <[email-masked]>
Date: Sun, 27 Sep 2020 09:29:37 +0200
Subject: [PATCH] ensure that `default-socket-file` is not present.

* modules/shepherd.scm(main): remove a possible `default-socket-file`
  left by a previous instance.
---
 modules/shepherd.scm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/modules/shepherd.scm b/modules/shepherd.scm
index 9f80f62..d18567e 100644
--- a/modules/shepherd.scm
+++ b/modules/shepherd.scm
@@ -147,7 +147,10 @@ already ~a threads running, disabling 'signalfd' support")
   (initialize-cli)
 
   (let ((config-file #f)
-	(socket-file default-socket-file)
+	(socket-file
+         (begin
+           (false-if-exception (delete-file default-socket-file))
+           default-socket-file))
         (pid-file    #f)
         (secure      #t)
         (logfile     #f))
-- 
2.28.0