Documentation ¶
Overview ¶
Example ¶
r := &Resolver{} t := &http.Transport{ DialContext: func(ctx context.Context, network string, addr string) (conn net.Conn, err error) { host, port, err := net.SplitHostPort(addr) if err != nil { return nil, err } ips, err := r.LookupHost(ctx, host) if err != nil { return nil, err } for _, ip := range ips { var dialer net.Dialer conn, err = dialer.DialContext(ctx, network, net.JoinHostPort(ip, port)) if err == nil { break } } return }, } c := &http.Client{Transport: t} res, err := c.Get("http://httpbin.org/status/418") if err == nil { fmt.Println(res.StatusCode) }
Output: 418
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DNSResolver ¶
type DNSResolver interface { LookupHost(ctx context.Context, host string) (addrs []string, err error) LookupAddr(ctx context.Context, addr string) (names []string, err error) }
func NewResolverOnlyV4 ¶
func NewResolverOnlyV4() DNSResolver
Create a new resolver that only resolves to IPv4 Addresses when looking up Hosts. Example:
resolver := dnscache.Resolver{ Resolver: NewResolverOnlyV4(), }
func NewResolverOnlyV6 ¶
func NewResolverOnlyV6() DNSResolver
Create a new resolver that only resolves to IPv6 Addresses when looking up Hosts. Example:
resolver := dnscache.Resolver{ Resolver: NewResolverOnlyV6(), }
type Resolver ¶
type Resolver struct { // Timeout defines the maximum allowed time allowed for a lookup. Timeout time.Duration // Resolver is used to perform actual DNS lookup. If nil, // net.DefaultResolver is used instead. Resolver DNSResolver // OnCacheMiss is executed if the host or address is not included in // the cache and the default lookup is executed. OnCacheMiss func() // contains filtered or unexported fields }
func (*Resolver) LookupAddr ¶
LookupAddr performs a reverse lookup for the given address, returning a list of names mapping to that address.
func (*Resolver) LookupHost ¶
LookupHost looks up the given host using the local resolver. It returns a slice of that host's addresses.
func (*Resolver) RefreshWithOptions ¶
func (r *Resolver) RefreshWithOptions(options ResolverRefreshOptions)
type ResolverRefreshOptions ¶
Click to show internal directories.
Click to hide internal directories.