github.com/metacubex/tfo-go@v0.0.0-20240228025757-be1269474a66/tfo_bsd+windows.go (about) 1 //go:build darwin || freebsd || windows 2 3 package tfo 4 5 import ( 6 "context" 7 "net" 8 ) 9 10 func (d *Dialer) dialTFO(ctx context.Context, network, address string, b []byte) (*net.TCPConn, error) { 11 if d.Fallback && runtimeDialTFOSupport.load() == dialTFOSupportNone { 12 return d.dialAndWriteTCPConn(ctx, network, address, b) 13 } 14 return d.dialTFOFromSocket(ctx, network, address, b) 15 } 16 17 func dialTCPAddr(network string, laddr, raddr *net.TCPAddr, b []byte) (*net.TCPConn, error) { 18 var d Dialer 19 setMultipathTCP(d.Dialer, false) // Align with [net.DialTCP]. 20 c, err := d.dialSingle(context.Background(), network, laddr, raddr, b, nil) 21 if err != nil { 22 return nil, &net.OpError{Op: "dial", Net: network, Source: laddr, Addr: raddr, Err: err} 23 } 24 c.SetKeepAlive(true) 25 c.SetKeepAlivePeriod(defaultTCPKeepAlive) 26 return c, nil 27 }