Close UAPI socket before exit

This commit is contained in:
Mathias Hall-Andersen
2017-08-01 12:14:38 +02:00
parent d7a49b8b8c
commit b03a6ab1b1
3 changed files with 29 additions and 7 deletions

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"log"
"os"
"os/signal"
"runtime"
)
@@ -78,17 +79,38 @@ func main() {
if err != nil {
logError.Fatal("UAPI listen error:", err)
}
defer uapi.Close()
errs := make(chan error)
term := make(chan os.Signal)
wait := device.WaitChannel()
go func() {
for {
conn, err := uapi.Accept()
if err != nil {
logError.Fatal("UAPI accept error:", err)
errs <- err
return
}
go ipcHandle(device, conn)
}
}()
device.Wait()
logInfo.Println("UAPI listener started")
// wait for program to terminate
signal.Notify(term, os.Kill)
signal.Notify(term, os.Interrupt)
select {
case <-wait:
case <-term:
case <-errs:
}
// clean up UAPI bind
uapi.Close()
logInfo.Println("Closing")
}