5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-22 04:50:29 +00:00

Catch SIGTERM instead of (impossible to capture) SIGKILL, also capture Windows service termination

This commit is contained in:
Neil Alexander 2018-02-18 21:16:47 +00:00
parent c0579024c0
commit 0176d25235

View File

@ -9,6 +9,7 @@ import "io/ioutil"
import "net"
import "os"
import "os/signal"
import "syscall"
import "time"
import "regexp"
@ -21,7 +22,7 @@ import "golang.org/x/net/ipv6"
import . "yggdrasil"
import _ "github.com/kardianos/minwinsvc"
import "github.com/kardianos/minwinsvc"
/**
* This is a very crude wrapper around src/yggdrasil
@ -306,7 +307,13 @@ func main() {
}
// Catch interrupt to exit gracefully
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, os.Kill)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
// Create a function to capture the service being stopped on Windows
winTerminate := func() {
c <- os.Interrupt
}
minwinsvc.SetOnExit(winTerminate)
// Wait for the terminate/interrupt signal
<-c
logger.Println("Stopping...")
}