http2

package
v0.0.0-...-871703d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2024 License: AGPL-3.0 Imports: 13 Imported by: 0

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

func Get

func Get(url string) (resp *http.Response, err error)
func Head(url string) (resp *http.Response, err error)

func Post

func Post(url string, contentType string, body io.Reader) (resp *http.Response, err error)

func PostForm

func PostForm(url string, data url.Values) (resp *http.Response, err error)

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL