summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2015-09-03 16:59:14 -0600
committerLuke Shumaker <lukeshu@sbcglobal.net>2015-09-03 16:59:14 -0600
commitdf78914cae2dc2e3da5170cf3f9c7b412aed3afa (patch)
tree9817dd885f6a11fe3b9bdd6d56eddfb15e7634ba /src
parenta6c2e22de92f459a52b8151ccc7f7c562c954750 (diff)
Use a defer/recover block to have the exit status on panic match LSB.
Diffstat (limited to 'src')
-rw-r--r--src/nshd/hackers_git/hackers.go2
-rw-r--r--src/nshd/main.go2
-rw-r--r--src/nslcd_systemd/nslcd_systemd.go2
-rw-r--r--src/sd_daemon/lsb/exit-status.go12
4 files changed, 18 insertions, 0 deletions
diff --git a/src/nshd/hackers_git/hackers.go b/src/nshd/hackers_git/hackers.go
index ecbda7a..814e921 100644
--- a/src/nshd/hackers_git/hackers.go
+++ b/src/nshd/hackers_git/hackers.go
@@ -6,6 +6,7 @@ import (
"nslcd_proto/util"
"nslcd_systemd"
"sd_daemon/logger"
+ "sd_daemon/lsb"
"sync"
)
@@ -47,6 +48,7 @@ func NewHackers(config Config) *Hackers {
}
o.workers.Add(1)
go func() {
+ defer lsb.Recover()
defer o.workers.Done()
o.worker()
}()
diff --git a/src/nshd/main.go b/src/nshd/main.go
index ebca1a6..bc53711 100644
--- a/src/nshd/main.go
+++ b/src/nshd/main.go
@@ -1,12 +1,14 @@
package main
import (
+ "sd_daemon/lsb"
"nshd/hackers_git"
"nslcd_systemd"
"os"
)
func main() {
+ defer lsb.Recover()
config := hackers_git.Config{
Pam_password_prohibit_message: "",
Yamldir: "/var/cache/parabola-hackers/users",
diff --git a/src/nslcd_systemd/nslcd_systemd.go b/src/nslcd_systemd/nslcd_systemd.go
index dd548ad..c4511ef 100644
--- a/src/nslcd_systemd/nslcd_systemd.go
+++ b/src/nslcd_systemd/nslcd_systemd.go
@@ -82,6 +82,7 @@ func Main(backend Backend) uint8 {
sock := make(chan *net.UnixConn, 1)
go func() {
+ defer lsb.Recover()
for {
conn, err := socket.Accept()
if err != nil {
@@ -114,6 +115,7 @@ Loop:
case conn := <-sock:
wg.Add(1)
go func() {
+ defer lsb.Recover()
defer wg.Done()
handler(conn, backend)
}()
diff --git a/src/sd_daemon/lsb/exit-status.go b/src/sd_daemon/lsb/exit-status.go
index ba5b68b..41eaafd 100644
--- a/src/sd_daemon/lsb/exit-status.go
+++ b/src/sd_daemon/lsb/exit-status.go
@@ -1,5 +1,10 @@
package lsb
+import (
+ "os"
+ "sd_daemon/logger"
+)
+
/* systemd daemon(7) recommends using the exit codes defined in the
* "LSB recomendations for SysV init scripts"[1].
*
@@ -60,3 +65,10 @@ const (
EXIT_BUS_ENDPOINT uint8 = 236
EXIT_SMACK_PROCESS_LABEL uint8 = 237
)
+
+func Recover() {
+ if r := recover(); r != nil {
+ logger.Err("panic: %v", r)
+ os.Exit(int(EXIT_FAILURE))
+ }
+}