func validateHostName()

in pulsar/internal/service_uri.go [168:195]


func validateHostName(serviceName string, serviceInfos []string, hostname string) (string, error) {
	uri, err := url.Parse("dummyscheme://" + hostname)
	if err != nil {
		return "", err
	}
	host := uri.Hostname()
	if strings.Contains(hostname, "[") && strings.Contains(hostname, "]") {
		host = fmt.Sprintf("[%s]", host)
	}
	if host == "" || uri.Scheme == "" {
		return "", errors.New("Invalid hostname : " + hostname)
	}

	port := uri.Port()
	if uri.Port() == "" {
		p := getServicePort(serviceName, serviceInfos)
		if p == -1 {
			return "", fmt.Errorf("invalid port : %d", p)
		}
		port = fmt.Sprint(p)
	}
	result := host + ":" + port
	_, _, err = net.SplitHostPort(result)
	if err != nil {
		return "", err
	}
	return result, nil
}