From 4537a1ac0023a5fc7816dc64915c67ad5253b6c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 25 Sep 2026 19:28:45 +0800 Subject: [PATCH] Fix system TUN read loop stopping on write errors --- transport/openconnect/device_system.go | 9 +++------ transport/openvpn/device_system.go | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/transport/openconnect/device_system.go b/transport/openconnect/device_system.go index 0750dc73..ac96666c 100644 --- a/transport/openconnect/device_system.go +++ b/transport/openconnect/device_system.go @@ -152,8 +152,7 @@ func (d *systemDevice) readLoop(tunInterface tun.Tun, mtu int) { err = d.writeOutbound([]*buf.Buffer{packetBuffer}) packetBuffer.DecRef() if err != nil { - d.options.Logger.Error(E.Cause(err, "write packet")) - return + d.options.Logger.Debug(E.Cause(err, "write packet")) } } } @@ -183,8 +182,7 @@ func (d *systemDevice) readLoopLinux(tunInterface tun.LinuxTUN, batchSize int, m packetBuffers[i].DecRef() } if writeErr != nil { - d.options.Logger.Error(E.Cause(writeErr, "write packet batch")) - return + d.options.Logger.Debug(E.Cause(writeErr, "write packet batch")) } } if readErr != nil { @@ -211,8 +209,7 @@ func (d *systemDevice) readLoopDarwin(tunInterface tun.DarwinTUN) { if len(outboundBuffers) > 0 { writeErr := d.writeOutbound(outboundBuffers) if writeErr != nil { - d.options.Logger.Error(E.Cause(writeErr, "write packet batch")) - return + d.options.Logger.Debug(E.Cause(writeErr, "write packet batch")) } } if readErr != nil { diff --git a/transport/openvpn/device_system.go b/transport/openvpn/device_system.go index 728626a9..ed393e30 100644 --- a/transport/openvpn/device_system.go +++ b/transport/openvpn/device_system.go @@ -155,8 +155,7 @@ func (d *systemDevice) readLoop(tunInterface tun.Tun, mtu int) { err = d.writeOutbound([]*buf.Buffer{packetBuffer}) packetBuffer.DecRef() if err != nil { - d.options.Logger.Error(E.Cause(err, "write packet")) - return + d.options.Logger.Debug(E.Cause(err, "write packet")) } } } @@ -193,8 +192,7 @@ func (d *systemDevice) readLoopLinux(tunInterface tun.LinuxTUN, batchSize int, m packetBuffer.DecRef() } if writeErr != nil { - d.options.Logger.Error(E.Cause(writeErr, "write packet batch")) - return + d.options.Logger.Debug(E.Cause(writeErr, "write packet batch")) } } if readErr != nil { @@ -226,8 +224,7 @@ func (d *systemDevice) readLoopDarwin(tunInterface tun.DarwinTUN) { if len(outboundBuffers) > 0 { writeErr := d.writeOutbound(outboundBuffers) if writeErr != nil { - d.options.Logger.Error(E.Cause(writeErr, "write packet batch")) - return + d.options.Logger.Debug(E.Cause(writeErr, "write packet batch")) } } if readErr != nil {