GoBackend: make socket IPC optional

This fixes the multi-user case, which cannot be determined at compile
time and probably isn't reasonable to consider anyway in a global
manner.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2018-07-31 14:27:29 +02:00
parent ffa3cefa67
commit 09cf73cd3c

View File

@ -91,28 +91,28 @@ func wgTurnOn(ifnameRef string, tun_fd int32, settings string) int32 {
return -1 return -1
} }
var uapi net.Listener;
uapiFile, err := UAPIOpen(name) uapiFile, err := UAPIOpen(name)
if err != nil { if err != nil {
unix.Close(int(tun_fd))
logger.Error.Println(err) logger.Error.Println(err)
return -1 } else {
} uapi, err = UAPIListen(name, uapiFile)
uapi, err := UAPIListen(name, uapiFile) if err != nil {
if err != nil { uapiFile.Close()
uapiFile.Close() logger.Error.Println(err)
unix.Close(int(tun_fd)) } else {
logger.Error.Println(err) go func() {
return -1 for {
} conn, err := uapi.Accept()
go func() { if err != nil {
for { return
conn, err := uapi.Accept() }
if err != nil { go ipcHandle(device, conn)
return }
} }()
go ipcHandle(device, conn)
} }
}() }
device.Up() device.Up()
logger.Info.Println("Device started") logger.Info.Println("Device started")
@ -138,7 +138,9 @@ func wgTurnOff(tunnelHandle int32) {
return return
} }
delete(tunnelHandles, tunnelHandle) delete(tunnelHandles, tunnelHandle)
handle.uapi.Close() if handle.uapi != nil {
handle.uapi.Close()
}
handle.device.Close() handle.device.Close()
} }