From beacb755b51e7b49cafcaa7e39178c351ac42712 Mon Sep 17 00:00:00 2001 From: ICKelin Date: Thu, 5 Sep 2024 10:45:50 +0800 Subject: [PATCH] =?UTF-8?q?f=C3=A8fix:=20fix=20quic=20reconnect=20fail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gtun/proxy/tproxy_tcp.go | 4 ++++ src/gtun/proxy/tproxy_udp.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/gtun/proxy/tproxy_tcp.go b/src/gtun/proxy/tproxy_tcp.go index e46ab99..56f6c73 100644 --- a/src/gtun/proxy/tproxy_tcp.go +++ b/src/gtun/proxy/tproxy_tcp.go @@ -141,6 +141,10 @@ func (p *TProxyTCP) doProxy(conn net.Conn) { logs.Debug("%s:%s=>%s:%s", sip, sport, dip, dport) stream, err := sess.OpenStream() if err != nil { + // force close to trigger reconnect + // quic CAN'T get close state by sess.IsClose() + // Close to trigger quic reconnect + sess.Close() logs.Error("open stream fail: %v", err) return } diff --git a/src/gtun/proxy/tproxy_udp.go b/src/gtun/proxy/tproxy_udp.go index 5617943..3ea8f4d 100644 --- a/src/gtun/proxy/tproxy_udp.go +++ b/src/gtun/proxy/tproxy_udp.go @@ -191,6 +191,10 @@ func (p *TProxyUDP) serve(lconn *net.UDPConn) error { p.udpsessLock.Unlock() sess := p.routeManager.Route(p.region, dip) if sess == nil { + // force close to trigger reconnect + // quic CAN'T get close state by sess.IsClose() + // Close to trigger quic reconnect + sess.Close() logs.Error("no route to host: %s", dip) continue }