Close UAPI socket before exit
This commit is contained in:
parent
d7a49b8b8c
commit
b03a6ab1b1
@ -186,6 +186,6 @@ func (device *Device) Close() {
|
||||
close(device.signal.stop)
|
||||
}
|
||||
|
||||
func (device *Device) Wait() {
|
||||
<-device.signal.stop
|
||||
func (device *Device) WaitChannel() chan struct{} {
|
||||
return device.signal.stop
|
||||
}
|
||||
|
@ -40,11 +40,11 @@ func NewLogger(level int) *Logger {
|
||||
|
||||
logger.Info = log.New(logInfo,
|
||||
"INFO: ",
|
||||
log.Ldate|log.Ltime|log.Lshortfile,
|
||||
log.Ldate|log.Ltime,
|
||||
)
|
||||
logger.Error = log.New(logErr,
|
||||
"ERROR: ",
|
||||
log.Ldate|log.Ltime|log.Lshortfile,
|
||||
log.Ldate|log.Ltime,
|
||||
)
|
||||
return logger
|
||||
}
|
||||
|
28
src/main.go
28
src/main.go
@ -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")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user