summaryrefslogtreecommitdiff
path: root/src/nslcd_systemd/nslcd_systemd.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/nslcd_systemd/nslcd_systemd.go')
-rw-r--r--src/nslcd_systemd/nslcd_systemd.go19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/nslcd_systemd/nslcd_systemd.go b/src/nslcd_systemd/nslcd_systemd.go
index 3d87310..fec60c3 100644
--- a/src/nslcd_systemd/nslcd_systemd.go
+++ b/src/nslcd_systemd/nslcd_systemd.go
@@ -8,6 +8,7 @@ import (
"os/signal"
sd "sd_daemon"
"sd_daemon/logger"
+ "sd_daemon/lsb"
"sync"
"syscall"
)
@@ -60,7 +61,7 @@ func handler(conn *net.UnixConn, backend nslcd_proto.Backend) {
}
}
-func Main(backend Backend) int {
+func Main(backend Backend) uint8 {
var err error = nil
var socket net.Listener = nil
defer func() {
@@ -73,7 +74,7 @@ func Main(backend Backend) int {
if err != nil {
logger.Err("%s", err.Error())
sd.Notify(false, "STOPPING=1")
- return 1
+ return lsb.EXIT_NOTRUNNING
}
sigs := make(chan os.Signal, 1)
@@ -84,12 +85,13 @@ func Main(backend Backend) int {
for {
conn, err := socket.Accept()
if err != nil {
- logger.Notice("%s", err.Error())
+ logger.Notice("Accept: %s", err.Error())
}
sock <- conn.(*net.UnixConn)
}
}()
+ exit := lsb.EXIT_SUCCESS
var wg sync.WaitGroup
sd.Notify(false, "READY=1")
Loop:
@@ -98,11 +100,15 @@ Loop:
case sig := <-sigs:
switch sig {
case syscall.SIGTERM:
- sd.Notify(false, "STOPPING=1")
break Loop
case syscall.SIGHUP:
sd.Notify(false, "RELOADING=1")
- backend.Reload()
+ err := backend.Reload()
+ if err != nil {
+ logger.Notice("Reload: %s", err.Error())
+ exit = lsb.EXIT_NOTRUNNING
+ break Loop
+ }
sd.Notify(false, "READY=1")
}
case conn := <-sock:
@@ -113,7 +119,8 @@ Loop:
}()
}
}
+ sd.Notify(false, "STOPPING=1")
wg.Wait()
- return 0
+ return exit
}