Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultClient = http.Client{ Transport: &http2.Transport{ DialTLSContext: func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) { if DefaultDialer.Timeout != 0 { var cancel context.CancelFunc ctx, cancel = context.WithTimeout(ctx, DefaultDialer.Timeout) defer cancel() } if !DefaultDialer.Deadline.IsZero() { var cancel context.CancelFunc ctx, cancel = context.WithDeadline(ctx, DefaultDialer.Deadline) defer cancel() } host, port, err := net.SplitHostPort(addr) if err != nil { return nil, err } addrs := lookupTable.Get(host) if len(addrs) == 0 { addrs, err = dns.DefaultResolver.LookupHost(ctx, host) if err != nil { if ip.IsIPv6Available.Get() { addrs, err = dns.IPv6Servers.LookupHostFallback(ctx, host) } else { addrs, err = dns.IPv4Servers.LookupHostFallback(ctx, host) } if err != nil { return nil, err } } lookupTable.Set(host, addrs) } if len(addr) == 0 { return nil, ErrEmptyHostAddress } var conn net.Conn var tlsConn *tls.Conn for _, a := range addrs { conn, err = DefaultDialer.DialContext(ctx, network, net.JoinHostPort(a, port)) if err != nil { continue } tlsConn = tls.Client(conn, cfg) err = terasu.Use(tlsConn).HandshakeContext(ctx, terasu.DefaultFirstFragmentLen) if err == nil { break } _ = tlsConn.Close() tlsConn = nil } return tlsConn, err }, }, }
View Source
var DefaultDialer = net.Dialer{ Timeout: time.Minute, }
View Source
var (
ErrEmptyHostAddress = errors.New("empty host addr")
)
Functions ¶
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.