NewResolver - create a new instance of a dns resolver for plugging into net.DefaultResolver. Addresses should be a list of ip addrs and optional port numbers, separated by colon. For example: 1.2.3.4:53 and 1.2.3.4 are both valid. In the absence of a port number, 53 will be used instead.
(addrs []string)
| 22 | // For example: 1.2.3.4:53 and 1.2.3.4 are both valid. In the absence |
| 23 | // of a port number, 53 will be used instead. |
| 24 | func NewResolver(addrs []string) (*net.Resolver, error) { |
| 25 | if len(addrs) == 0 { |
| 26 | return nil, errors.New("must specify at least resolver address") |
| 27 | } |
| 28 | cleanAddrs, err := normalizeAddrs(addrs) |
| 29 | if err != nil { |
| 30 | return nil, err |
| 31 | } |
| 32 | return &net.Resolver{ |
| 33 | PreferGo: true, |
| 34 | Dial: (&resolver{addrs: cleanAddrs, dialer: &net.Dialer{}}).dial, |
| 35 | }, nil |
| 36 | } |
| 37 | |
| 38 | func normalizeAddrs(addrs []string) ([]string, error) { |
| 39 | normal := make([]string, len(addrs)) |