summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2020-09-03 12:05:04 +0200
committerAndrej Mihajlov <and@mullvad.net>2020-09-03 13:32:06 +0200
commite698721807cac35c04b2a54179144553df4656b9 (patch)
treea1ad4e1e8f664e60bb901c4fd71911c4b2f13841
parentab640dc324e02ac72c91bda6817c3c28a5f244b2 (diff)
downloadmullvadvpn-e698721807cac35c04b2a54179144553df4656b9.tar.xz
mullvadvpn-e698721807cac35c04b2a54179144553df4656b9.zip
Update wireguard-go-bridge
https://git.zx2c4.com/wireguard-apple/commit/?id=737f847c0db36429f7136fb514409c22e13a70ee
-rw-r--r--ios/wireguard-go-bridge/api-ios.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/ios/wireguard-go-bridge/api-ios.go b/ios/wireguard-go-bridge/api-ios.go
index 93dd323df7..d6eccd8f28 100644
--- a/ios/wireguard-go-bridge/api-ios.go
+++ b/ios/wireguard-go-bridge/api-ios.go
@@ -90,15 +90,22 @@ func wgTurnOn(settings *C.char, tunFd int32) int32 {
Info: log.New(&CLogger{level: 1}, "", 0),
Error: log.New(&CLogger{level: 2}, "", 0),
}
+ dupTunFd, err := unix.Dup(int(tunFd))
+ if err != nil {
+ logger.Error.Println(err)
+ return -1
+ }
- err := unix.SetNonblock(int(tunFd), true)
+ err = unix.SetNonblock(dupTunFd, true)
if err != nil {
logger.Error.Println(err)
+ unix.Close(dupTunFd)
return -1
}
- tun, err := tun.CreateTUNFromFile(os.NewFile(uintptr(tunFd), "/dev/tun"), 0)
+ tun, err := tun.CreateTUNFromFile(os.NewFile(uintptr(dupTunFd), "/dev/tun"), 0)
if err != nil {
logger.Error.Println(err)
+ unix.Close(dupTunFd)
return -1
}
logger.Info.Println("Attaching to interface")
@@ -107,6 +114,7 @@ func wgTurnOn(settings *C.char, tunFd int32) int32 {
setError := device.IpcSetOperation(bufio.NewReader(strings.NewReader(C.GoString(settings))))
if setError != nil {
logger.Error.Println(setError)
+ unix.Close(dupTunFd)
return -1
}
@@ -120,6 +128,7 @@ func wgTurnOn(settings *C.char, tunFd int32) int32 {
}
}
if i == math.MaxInt32 {
+ unix.Close(dupTunFd)
return -1
}
tunnelHandles[i] = tunnelHandle{device, logger}