Fixed deadlock in index.go

This commit is contained in:
Mathias Hall-Andersen
2017-07-17 16:16:18 +02:00
parent dd4da93749
commit c5d7efc246
8 changed files with 194 additions and 152 deletions

View File

@@ -17,12 +17,14 @@ func main() {
}
switch os.Args[1] {
case "-f", "--foreground":
foreground = true
if len(os.Args) != 3 {
return
}
interfaceName = os.Args[2]
default:
foreground = false
if len(os.Args) != 2 {
@@ -48,8 +50,8 @@ func main() {
// open TUN device
tun, err := CreateTUN(interfaceName)
log.Println(tun, err)
if err != nil {
log.Println("Failed to create tun device:", err)
return
}
@@ -69,11 +71,15 @@ func main() {
}
defer uapi.Close()
for {
conn, err := uapi.Accept()
if err != nil {
logError.Fatal("accept error:", err)
go func() {
for {
conn, err := uapi.Accept()
if err != nil {
logError.Fatal("UAPI accept error:", err)
}
go ipcHandle(device, conn)
}
go ipcHandle(device, conn)
}
}()
device.Wait()
}