mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2024-11-15 13:41:23 +08:00
26 lines
592 B
Go
26 lines
592 B
Go
|
//go:build unix
|
||
|
|
||
|
package dialer
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"net"
|
||
|
|
||
|
"github.com/metacubex/tfo-go"
|
||
|
)
|
||
|
|
||
|
const DisableTFO = false
|
||
|
|
||
|
func dialTFO(ctx context.Context, netDialer net.Dialer, network, address string) (net.Conn, error) {
|
||
|
ctx, cancel := context.WithTimeout(context.Background(), DefaultTCPTimeout)
|
||
|
dialer := tfo.Dialer{Dialer: netDialer, DisableTFO: false}
|
||
|
return &tfoConn{
|
||
|
dialed: make(chan bool, 1),
|
||
|
cancel: cancel,
|
||
|
ctx: ctx,
|
||
|
dialFn: func(ctx context.Context, earlyData []byte) (net.Conn, error) {
|
||
|
return dialer.DialContext(ctx, network, address, earlyData)
|
||
|
},
|
||
|
}, nil
|
||
|
}
|