diff --git a/client/internal/wgproxy/factory_linux.go b/client/internal/wgproxy/factory_linux.go index aae4a95d6..e8d48b35b 100644 --- a/client/internal/wgproxy/factory_linux.go +++ b/client/internal/wgproxy/factory_linux.go @@ -12,7 +12,7 @@ func NewFactory(wgPort int) *Factory { ebpfProxy := NewWGEBPFProxy(wgPort) err := ebpfProxy.Listen() if err != nil { - log.Errorf("failed to initialize ebpf proxy: %s", err) + log.Warnf("failed to initialize ebpf proxy, fallback to user space proxy: %s", err) return f } diff --git a/client/internal/wgproxy/proxy_ebpf.go b/client/internal/wgproxy/proxy_ebpf.go index dc6993ba0..f1b338407 100644 --- a/client/internal/wgproxy/proxy_ebpf.go +++ b/client/internal/wgproxy/proxy_ebpf.go @@ -69,7 +69,7 @@ func (p *WGEBPFProxy) Listen() error { p.conn, err = net.ListenUDP("udp", &addr) if err != nil { cErr := p.Free() - if err != nil { + if cErr != nil { log.Errorf("failed to close the wgproxy: %s", cErr) } return err @@ -153,7 +153,9 @@ func (p *WGEBPFProxy) proxyToRemote() { return } + p.turnConnMutex.Lock() conn, ok := p.turnConnStore[uint16(addr.Port)] + p.turnConnMutex.Unlock() if !ok { log.Errorf("turn conn not found by port: %d", addr.Port) continue