From c6a282f1e3fe7b4abef2080d1b07d0bd0a2c564e Mon Sep 17 00:00:00 2001 From: Zoltan Papp Date: Wed, 24 Apr 2024 19:25:08 +0200 Subject: [PATCH] Fix on mac --- go.sum | 3 +-- iface/bind/bind.go | 21 ++++++++++++++++----- iface/tun_darwin.go | 8 ++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/go.sum b/go.sum index 8d38bdaa3..f5165804f 100644 --- a/go.sum +++ b/go.sum @@ -389,8 +389,7 @@ github.com/netbirdio/service v0.0.0-20230215170314-b923b89432b0 h1:hirFRfx3grVA/ github.com/netbirdio/service v0.0.0-20230215170314-b923b89432b0/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM= github.com/netbirdio/systray v0.0.0-20231030152038-ef1ed2a27949 h1:xbWM9BU6mwZZLHxEjxIX/V8Hv3HurQt4mReIE4mY4DM= github.com/netbirdio/systray v0.0.0-20231030152038-ef1ed2a27949/go.mod h1:AecygODWIsBquJCJFop8MEQcJbWFfw/1yWbVabNgpCM= -github.com/netbirdio/wireguard-go v0.0.0-20240105182236-6c340dd55aed h1:t0UADZUJDaaZgfKrt8JUPrOLL9Mg/ryjP85RAH53qgs= -github.com/netbirdio/wireguard-go v0.0.0-20240105182236-6c340dd55aed/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= +github.com/netbirdio/wireguard-go v0.0.0-20240422165616-c6832bb477d5 h1:m48qfB2ILlFx3oZlw7aEeD+V6vXnMb0hNwmDCtdcgv0= github.com/netbirdio/wireguard-go v0.0.0-20240422165616-c6832bb477d5/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= diff --git a/iface/bind/bind.go b/iface/bind/bind.go index c0aa9023d..668191a8f 100644 --- a/iface/bind/bind.go +++ b/iface/bind/bind.go @@ -88,12 +88,23 @@ func (s *ICEBind) createIPv4ReceiverFn(ipv4MsgsPool *sync.Pool, pc *ipv4.PacketC } } } else { - msg := &(*msgs)[0] - msg.N, msg.NN, _, msg.Addr, err = conn.ReadMsgUDP(msg.Buffers[0], msg.OOB) - if err != nil { - return 0, err + if netConn != nil { + log.Debugf("----read from turn conn...") + msg := &(*msgs)[0] + msg.N, msg.Addr, err = netConn.ReadFrom(msg.Buffers[0]) + if err != nil { + return 0, err + } + log.Debugf("----msg address is: %s, size: %d", msg.Addr.String(), msg.N) + numMsgs = 1 + } else { + msg := &(*msgs)[0] + msg.N, msg.NN, _, msg.Addr, err = conn.ReadMsgUDP(msg.Buffers[0], msg.OOB) + if err != nil { + return 0, err + } + numMsgs = 1 } - numMsgs = 1 } for i := 0; i < numMsgs; i++ { msg := &(*msgs)[i] diff --git a/iface/tun_darwin.go b/iface/tun_darwin.go index bac14986f..3ff91ae73 100644 --- a/iface/tun_darwin.go +++ b/iface/tun_darwin.go @@ -28,6 +28,14 @@ type tunDevice struct { configurer wgConfigurer } +func (t *tunDevice) SetTurnConn(conn interface{}) { + t.iceBind.SetTurnConn(conn) + err := t.device.BindUpdate() + if err != nil { + log.Errorf("failed to update bind: %v", err) + } +} + func newTunDevice(name string, address WGAddress, port int, key string, mtu int, transportNet transport.Net) wgTunDevice { return &tunDevice{ name: name,