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
}