Skip to content

Commit 032e3cb

Browse files
committed
Merge upstream testing (Smart Sync)
2 parents 3f988a0 + 0c23cdb commit 032e3cb

12 files changed

Lines changed: 157 additions & 124 deletions

File tree

.github/CRONET_GO_VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
cfbca3ad7edb3f8c1bd78b4bcb7c4c1a1ae3d195
1+
e1d173257b86d732479dda28cc0746ba33030afe

cmd/sing-box/cmd_tools_fetch_http3.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"github.com/sagernet/quic-go"
1111
"github.com/sagernet/quic-go/http3"
1212
box "github.com/sagernet/sing-box"
13-
"github.com/sagernet/sing/common/bufio"
1413
M "github.com/sagernet/sing/common/metadata"
1514
N "github.com/sagernet/sing/common/network"
1615
)
@@ -28,7 +27,16 @@ func initializeHTTP3Client(instance *box.Box) error {
2827
if dErr != nil {
2928
return nil, dErr
3029
}
31-
return quic.DialEarly(ctx, bufio.NewUnbindPacketConn(udpConn), udpConn.RemoteAddr(), tlsCfg, cfg)
30+
quicConn, dErr := quic.DialEarlyConn(ctx, udpConn, tlsCfg, cfg)
31+
if dErr != nil {
32+
udpConn.Close()
33+
return nil, dErr
34+
}
35+
go func() {
36+
<-quicConn.Context().Done()
37+
udpConn.Close()
38+
}()
39+
return quicConn, nil
3240
},
3341
},
3442
}

common/httpclient/http3_transport.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"github.com/sagernet/quic-go/http3"
1515
"github.com/sagernet/sing-box/common/tls"
1616
"github.com/sagernet/sing-box/option"
17-
"github.com/sagernet/sing/common/bufio"
1817
E "github.com/sagernet/sing/common/exceptions"
1918
M "github.com/sagernet/sing/common/metadata"
2019
N "github.com/sagernet/sing/common/network"
@@ -86,11 +85,15 @@ func newHTTP3RoundTripper(
8685
if err != nil {
8786
return nil, err
8887
}
89-
quicConn, err := quic.DialEarly(ctx, bufio.NewUnbindPacketConn(conn), conn.RemoteAddr(), tlsConfig, quicConfig)
88+
quicConn, err := quic.DialEarlyConn(ctx, conn, tlsConfig, quicConfig)
9089
if err != nil {
9190
conn.Close()
9291
return nil, err
9392
}
93+
go func() {
94+
<-quicConn.Context().Done()
95+
conn.Close()
96+
}()
9497
return quicConn, nil
9598
},
9699
}

common/networkquality/http3.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/sagernet/quic-go"
1212
"github.com/sagernet/quic-go/http3"
13+
qtls "github.com/sagernet/sing-quic"
1314
sBufio "github.com/sagernet/sing/common/bufio"
1415
M "github.com/sagernet/sing/common/metadata"
1516
N "github.com/sagernet/sing/common/network"
@@ -40,13 +41,17 @@ func NewHTTP3MeasurementClientFactory(dialer N.Dialer) (MeasurementClientFactory
4041
wrappedConn := udpConn
4142
if len(readCounters) > 0 || len(writeCounters) > 0 {
4243
wrappedConn = sBufio.NewCounterConn(udpConn, readCounters, writeCounters)
44+
qtls.SetDesiredBufferSizes(udpConn)
4345
}
44-
packetConn := sBufio.NewUnbindPacketConn(wrappedConn)
45-
quicConn, dialErr := quic.DialEarly(ctx, packetConn, udpConn.RemoteAddr(), tlsCfg, cfg)
46+
quicConn, dialErr := quic.DialEarlyConn(ctx, wrappedConn, tlsCfg, cfg)
4647
if dialErr != nil {
4748
udpConn.Close()
4849
return nil, dialErr
4950
}
51+
go func() {
52+
<-quicConn.Context().Done()
53+
udpConn.Close()
54+
}()
5055
return quicConn, nil
5156
},
5257
}

dns/transport/quic/http3.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"github.com/sagernet/sing-box/option"
2323
"github.com/sagernet/sing/common"
2424
"github.com/sagernet/sing/common/buf"
25-
"github.com/sagernet/sing/common/bufio"
2625
E "github.com/sagernet/sing/common/exceptions"
2726
"github.com/sagernet/sing/common/logger"
2827
M "github.com/sagernet/sing/common/metadata"
@@ -121,7 +120,7 @@ func (t *HTTP3Transport) newTransport() *http3.Transport {
121120
if dialErr != nil {
122121
return nil, dialErr
123122
}
124-
quicConn, dialErr := quic.DialEarly(ctx, bufio.NewUnbindPacketConn(conn), conn.RemoteAddr(), tlsCfg, cfg)
123+
quicConn, dialErr := quic.DialEarlyConn(ctx, conn, tlsCfg, cfg)
125124
if dialErr != nil {
126125
conn.Close()
127126
return nil, dialErr

dns/transport/quic/quic.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"github.com/sagernet/sing-box/option"
1818
sQUIC "github.com/sagernet/sing-quic"
1919
"github.com/sagernet/sing/common"
20-
"github.com/sagernet/sing/common/bufio"
2120
E "github.com/sagernet/sing/common/exceptions"
2221
M "github.com/sagernet/sing/common/metadata"
2322
N "github.com/sagernet/sing/common/network"
@@ -109,8 +108,7 @@ func (t *Transport) Exchange(ctx context.Context, message *mDNS.Msg) (*mDNS.Msg,
109108
}
110109
earlyConnection, err := sQUIC.DialEarly(
111110
ctx,
112-
bufio.NewUnbindPacketConn(rawConn),
113-
t.serverAddr.UDPAddr(),
111+
rawConn,
114112
t.tlsConfig,
115113
nil,
116114
)

docs/changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
icon: material/alert-decagram
33
---
44

5+
#### 1.14.0-beta.8
6+
7+
* Fixes and improvements
8+
59
#### 1.14.0-beta.7
610

711
* Add Hysteria2 Chrome QUIC fingerprint parroting **1**

go.mod

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,21 @@ require (
3535
github.com/sagernet/asc-go v0.0.0-20241217030726-d563060fe4e1
3636
github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a
3737
github.com/sagernet/cors v1.2.1
38-
github.com/sagernet/cronet-go v0.0.0-20260731162621-4185d471b2e4
39-
github.com/sagernet/cronet-go/all v0.0.0-20260731162621-4185d471b2e4
38+
github.com/sagernet/cronet-go v0.0.0-20260806063814-2890ac0cdcf5
39+
github.com/sagernet/cronet-go/all v0.0.0-20260806063814-2890ac0cdcf5
4040
github.com/sagernet/fswatch v0.1.2
4141
github.com/sagernet/gliderssh v0.3.4-0.20260531100337-2194faca5648
4242
github.com/sagernet/gomobile v0.1.12
4343
github.com/sagernet/gvisor v0.0.0-20260727.0-sing-box-mod.1
4444
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a
4545
github.com/sagernet/nftables v0.3.0-mod.4
46-
github.com/sagernet/quic-go v0.61.0-sing-box-mod.1
46+
github.com/sagernet/quic-go v0.61.0-sing-box-mod.2
4747
github.com/sagernet/sing v0.8.13-0.20260804143108-f22b119cc7a2
4848
github.com/sagernet/sing-cloudflared v0.1.3-0.20260706062323-d9787e794aa3
4949
github.com/sagernet/sing-mux v0.3.5
5050
github.com/sagernet/sing-openconnect v0.0.0-20260722140139-e0c977659ca2
5151
github.com/sagernet/sing-openvpn v0.0.0-20260729104525-103eb5fe5eb6
52-
github.com/sagernet/sing-quic v0.6.4
52+
github.com/sagernet/sing-quic v0.7.0-beta.1
5353
github.com/sagernet/sing-shadowsocks v0.2.8
5454
github.com/sagernet/sing-shadowsocks2 v0.2.1
5555
github.com/sagernet/sing-shadowtls v0.2.1
@@ -59,7 +59,7 @@ require (
5959
github.com/sagernet/sing-vmess v0.2.8-0.20250909125414-3aed155119a1
6060
github.com/sagernet/smux v1.5.50-sing-box-mod.1
6161
github.com/sagernet/tailscale v1.102.1-sing-box-1.14-mod.2
62-
github.com/sagernet/wireguard-go v0.0.5-0.20260805042941-f39689ad3562
62+
github.com/sagernet/wireguard-go v0.0.5-0.20260806044357-aace29bc2c2d
6363
github.com/sagernet/ws v0.0.0-20231204124109-acfe8907c854
6464
github.com/spf13/cobra v1.10.2
6565
github.com/stretchr/testify v1.11.1
@@ -139,35 +139,35 @@ require (
139139
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
140140
github.com/quic-go/qpack v0.6.0 // indirect
141141
github.com/safchain/ethtool v0.3.0 // indirect
142-
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260731161755-38229fb700f6 // indirect
143-
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260731161755-38229fb700f6 // indirect
144-
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260731161755-38229fb700f6 // indirect
145-
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260731161755-38229fb700f6 // indirect
146-
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260731161755-38229fb700f6 // indirect
147-
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260731161755-38229fb700f6 // indirect
148-
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260731161755-38229fb700f6 // indirect
149-
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260731161755-38229fb700f6 // indirect
150-
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260731161755-38229fb700f6 // indirect
151-
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260731161755-38229fb700f6 // indirect
152-
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260731161755-38229fb700f6 // indirect
153-
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260731161755-38229fb700f6 // indirect
154-
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260731161755-38229fb700f6 // indirect
155-
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260731161755-38229fb700f6 // indirect
156-
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260731161755-38229fb700f6 // indirect
157-
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260731161755-38229fb700f6 // indirect
158-
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260731161755-38229fb700f6 // indirect
159-
github.com/sagernet/cronet-go/lib/linux_loong64 v0.0.0-20260731161755-38229fb700f6 // indirect
160-
github.com/sagernet/cronet-go/lib/linux_loong64_musl v0.0.0-20260731161755-38229fb700f6 // indirect
161-
github.com/sagernet/cronet-go/lib/linux_mips64le v0.0.0-20260731161755-38229fb700f6 // indirect
162-
github.com/sagernet/cronet-go/lib/linux_mipsle v0.0.0-20260731161755-38229fb700f6 // indirect
163-
github.com/sagernet/cronet-go/lib/linux_mipsle_musl v0.0.0-20260731161755-38229fb700f6 // indirect
164-
github.com/sagernet/cronet-go/lib/linux_riscv64 v0.0.0-20260731161755-38229fb700f6 // indirect
165-
github.com/sagernet/cronet-go/lib/linux_riscv64_musl v0.0.0-20260731161755-38229fb700f6 // indirect
166-
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260731161755-38229fb700f6 // indirect
167-
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260731161755-38229fb700f6 // indirect
168-
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260731161755-38229fb700f6 // indirect
169-
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260731161755-38229fb700f6 // indirect
170-
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260731161755-38229fb700f6 // indirect
142+
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260806062927-cf771d1d22e4 // indirect
143+
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
144+
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260806062927-cf771d1d22e4 // indirect
145+
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
146+
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
147+
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
148+
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260806062927-cf771d1d22e4 // indirect
149+
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
150+
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260806062927-cf771d1d22e4 // indirect
151+
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260806062927-cf771d1d22e4 // indirect
152+
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260806062927-cf771d1d22e4 // indirect
153+
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
154+
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260806062927-cf771d1d22e4 // indirect
155+
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260806062927-cf771d1d22e4 // indirect
156+
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
157+
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260806062927-cf771d1d22e4 // indirect
158+
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260806062927-cf771d1d22e4 // indirect
159+
github.com/sagernet/cronet-go/lib/linux_loong64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
160+
github.com/sagernet/cronet-go/lib/linux_loong64_musl v0.0.0-20260806062927-cf771d1d22e4 // indirect
161+
github.com/sagernet/cronet-go/lib/linux_mips64le v0.0.0-20260806062927-cf771d1d22e4 // indirect
162+
github.com/sagernet/cronet-go/lib/linux_mipsle v0.0.0-20260806062927-cf771d1d22e4 // indirect
163+
github.com/sagernet/cronet-go/lib/linux_mipsle_musl v0.0.0-20260806062927-cf771d1d22e4 // indirect
164+
github.com/sagernet/cronet-go/lib/linux_riscv64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
165+
github.com/sagernet/cronet-go/lib/linux_riscv64_musl v0.0.0-20260806062927-cf771d1d22e4 // indirect
166+
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260806062927-cf771d1d22e4 // indirect
167+
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
168+
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260806062927-cf771d1d22e4 // indirect
169+
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
170+
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260806062927-cf771d1d22e4 // indirect
171171
github.com/smallstep/pkcs7 v0.1.1 // indirect
172172
github.com/spf13/pflag v1.0.9 // indirect
173173
github.com/tailscale/certstore v0.1.1-0.20260409135935-3638fb84b77d // indirect

0 commit comments

Comments
 (0)