mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-25 11:44:44 +00:00
Ensure VPNKit process is properly killed when errors occur
The log.Fatal* calls will leak the vpnkit process since defer functions are not invoked when os.Exit(int) is invoked We register an ExitHandler with logrus - that'll be invoke when log.Fatal* is called Signed-off-by: Steve Hiehn <shiehn@pivotal.io> Signed-off-by: Dave Protasowski <dprotaso@gmail.com>
This commit is contained in:
parent
dcff2008cd
commit
c9b4f8306a
@ -240,14 +240,10 @@ func runHyperKit(args []string) {
|
||||
if err != nil {
|
||||
log.Fatalln("Unable to start vpnkit: ", err)
|
||||
}
|
||||
defer func() {
|
||||
if vpnkitProcess != nil {
|
||||
err := vpnkitProcess.Kill()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
defer shutdownVPNKit(vpnkitProcess)
|
||||
log.RegisterExitHandler(func() {
|
||||
shutdownVPNKit(vpnkitProcess)
|
||||
})
|
||||
// The guest will use this 9P mount to configure which ports to forward
|
||||
h.Sockets9P = []hyperkit.Socket9P{{Path: vpnkitPortSocket, Tag: "port"}}
|
||||
// VSOCK port 62373 is used to pass traffic from host->guest
|
||||
@ -306,6 +302,16 @@ func runHyperKit(args []string) {
|
||||
}
|
||||
}
|
||||
|
||||
func shutdownVPNKit(process *os.Process) {
|
||||
if process == nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err := process.Kill(); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
// createListenSocket creates a new unix domain socket and returns the open file
|
||||
func createListenSocket(path string) (*os.File, error) {
|
||||
os.Remove(path)
|
||||
|
Loading…
Reference in New Issue
Block a user