mirror of
https://github.com/rwinkhart/rcw.git
synced 2026-08-28 04:46:42 -04:00
Ensure listener is closed even if the daemon is killed unexpectedly
This commit is contained in:
@@ -8,7 +8,9 @@ import (
|
||||
"net"
|
||||
"net/rpc"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strconv"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
peercred "github.com/rwinkhart/peercred-mini"
|
||||
@@ -35,6 +37,15 @@ func Start(passphrase string) {
|
||||
defer listener.Close()
|
||||
log.Printf("RPC daemon listening on unix://%s", socketPath)
|
||||
|
||||
// capture sigterms to ensure listener is closed
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
|
||||
go func() {
|
||||
<-sigChan
|
||||
listener.Close()
|
||||
os.Exit(0)
|
||||
}()
|
||||
|
||||
// accept connections (timeout after 3 minutes of inactivity)
|
||||
for {
|
||||
listener.(*net.UnixListener).SetDeadline(time.Now().Add(3 * time.Minute))
|
||||
|
||||
Reference in New Issue
Block a user