From 15625807a516e367f8ca55ab37b06abbfaf48207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Mon, 6 Oct 2025 01:33:52 +0800 Subject: [PATCH] feat: support bypass trs --- dns/dns.go | 8 ++++++-- dns/doh.go | 6 +++++- http/http.go | 6 +++++- http2/http2.go | 6 +++++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/dns/dns.go b/dns/dns.go index 30daf8e..5542c78 100644 --- a/dns/dns.go +++ b/dns/dns.go @@ -180,7 +180,11 @@ func (ds *DNSList) DialContext(ctx context.Context, dialer *net.Dialer, firstFra continue } tlsConn = tls.Client(conn, &tls.Config{ServerName: host}) - err = terasu.Use(tlsConn).HandshakeContext(ctx, firstFragmentLen) + if firstFragmentLen > 0 { + err = terasu.Use(tlsConn).HandshakeContext(ctx, firstFragmentLen) + } else { + err = tlsConn.HandshakeContext(ctx) + } if err == nil { return nil } @@ -268,7 +272,7 @@ var IPv4Servers = DNSList{ var DefaultResolver = &net.Resolver{ PreferGo: true, - Dial: func(ctx context.Context, _, _ string) (net.Conn, error) { + Dial: func(ctx context.Context, nw, _ string) (net.Conn, error) { if ip.IsIPv6Available.Get() { return IPv6Servers.DialContext(ctx, nil, terasu.DefaultFirstFragmentLen) } diff --git a/dns/doh.go b/dns/doh.go index 76b118b..4611cc0 100644 --- a/dns/doh.go +++ b/dns/doh.go @@ -89,7 +89,11 @@ var trsHTTP2ClientWithSystemDNS = http.Client{ continue } tlsConn = tls.Client(conn, cfg) - err = terasu.Use(tlsConn).HandshakeContext(ctx, terasu.DefaultFirstFragmentLen) + if terasu.DefaultFirstFragmentLen > 0 { + err = terasu.Use(tlsConn).HandshakeContext(ctx, terasu.DefaultFirstFragmentLen) + } else { + err = tlsConn.HandshakeContext(ctx) + } if err == nil { break } diff --git a/http/http.go b/http/http.go index 7e55fd0..913031c 100644 --- a/http/http.go +++ b/http/http.go @@ -61,7 +61,11 @@ var DefaultClient = http.Client{ tlsConn = tls.Client(conn, &tls.Config{ ServerName: host, }) - err = terasu.Use(tlsConn).HandshakeContext(ctx, terasu.DefaultFirstFragmentLen) + if terasu.DefaultFirstFragmentLen > 0 { + err = terasu.Use(tlsConn).HandshakeContext(ctx, terasu.DefaultFirstFragmentLen) + } else { + err = tlsConn.HandshakeContext(ctx) + } if err == nil { break } diff --git a/http2/http2.go b/http2/http2.go index c6e738b..1d4b7e0 100644 --- a/http2/http2.go +++ b/http2/http2.go @@ -59,7 +59,11 @@ var DefaultClient = http.Client{ continue } tlsConn = tls.Client(conn, cfg) - err = terasu.Use(tlsConn).HandshakeContext(ctx, terasu.DefaultFirstFragmentLen) + if terasu.DefaultFirstFragmentLen > 0 { + err = terasu.Use(tlsConn).HandshakeContext(ctx, terasu.DefaultFirstFragmentLen) + } else { + err = tlsConn.HandshakeContext(ctx) + } if err == nil { break }