func()

in lib/hostlist/config.go [50:76]


func (c *Config) getResolver() (resolver, error) {
	if c.DNS == "" && len(c.Static) == 0 {
		return nil, errors.New("no dns record or static list supplied")
	}
	if c.DNS != "" && len(c.Static) > 0 {
		return nil, errors.New("both dns record and static list supplied")
	}

	if len(c.Static) > 0 {
		for _, addr := range c.Static {
			if _, _, err := net.SplitHostPort(addr); err != nil {
				return nil, fmt.Errorf("invalid static addr: %s", err)
			}
		}
		return &staticResolver{stringset.FromSlice(c.Static)}, nil
	}

	dns, rawport, err := net.SplitHostPort(c.DNS)
	if err != nil {
		return nil, fmt.Errorf("invalid dns: %s", err)
	}
	port, err := strconv.Atoi(rawport)
	if err != nil {
		return nil, fmt.Errorf("invalid dns port: %s", err)
	}
	return &dnsResolver{dns, port}, nil
}