@@ -20,6 +20,8 @@ import (
2020 M "github.com/sagernet/sing/common/metadata"
2121 N "github.com/sagernet/sing/common/network"
2222 "github.com/sagernet/sing/service"
23+
24+ "github.com/metacubex/tfo-go"
2325)
2426
2527var (
2830)
2931
3032type DefaultDialer struct {
31- dialer4 tcpDialer
32- dialer6 tcpDialer
33+ dialer4 tfo. Dialer
34+ dialer6 tfo. Dialer
3335 udpDialer4 net.Dialer
3436 udpDialer6 net.Dialer
3537 udpListener net.ListenConfig
@@ -177,19 +179,10 @@ func NewDefault(ctx context.Context, options option.DialerOptions) (*DefaultDial
177179 udpAddr6 = M .SocksaddrFrom (bindAddr , 0 ).String ()
178180 }
179181 if options .TCPMultiPath {
180- if ! go121Available {
181- return nil , E .New ("MultiPath TCP requires go1.21, please recompile your binary." )
182- }
183- setMultiPathTCP (& dialer4 )
184- }
185- tcpDialer4 , err := newTCPDialer (dialer4 , options .TCPFastOpen )
186- if err != nil {
187- return nil , err
188- }
189- tcpDialer6 , err := newTCPDialer (dialer6 , options .TCPFastOpen )
190- if err != nil {
191- return nil , err
182+ dialer4 .SetMultipathTCP (true )
192183 }
184+ tcpDialer4 := tfo.Dialer {Dialer : dialer4 , DisableTFO : ! options .TCPFastOpen }
185+ tcpDialer6 := tfo.Dialer {Dialer : dialer6 , DisableTFO : ! options .TCPFastOpen }
193186 return & DefaultDialer {
194187 dialer4 : tcpDialer4 ,
195188 dialer6 : tcpDialer6 ,
@@ -269,7 +262,7 @@ func (d *DefaultDialer) DialParallelInterface(ctx context.Context, network strin
269262 }
270263 var dialer net.Dialer
271264 if N .NetworkName (network ) == N .NetworkTCP {
272- dialer = dialerFromTCPDialer ( d .dialer4 )
265+ dialer = d .dialer4 . Dialer
273266 } else {
274267 dialer = d .udpDialer4
275268 }
@@ -317,9 +310,9 @@ func (d *DefaultDialer) ListenPacket(ctx context.Context, destination M.Socksadd
317310
318311func (d * DefaultDialer ) DialerForICMPDestination (destination netip.Addr ) net.Dialer {
319312 if ! destination .Is6 () {
320- return dialerFromTCPDialer ( d .dialer6 )
313+ return d .dialer6 . Dialer
321314 } else {
322- return dialerFromTCPDialer ( d .dialer4 )
315+ return d .dialer4 . Dialer
323316 }
324317}
325318
0 commit comments