- Parallel resolver to resolve multiple hosts - Repeat resolver to repeat resolution for a single host - Additional parameters for fault toleration - Do not update servers if e.g. > 10% DNS resolutions failed - resolver package in updater package
18 lines
366 B
Go
18 lines
366 B
Go
package resolver
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
)
|
|
|
|
func newResolver(resolverAddress string) *net.Resolver {
|
|
d := net.Dialer{}
|
|
resolverAddress = net.JoinHostPort(resolverAddress, "53")
|
|
return &net.Resolver{
|
|
PreferGo: true,
|
|
Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
|
|
return d.DialContext(ctx, "udp", resolverAddress)
|
|
},
|
|
}
|
|
}
|