|
@@ -74,20 +74,26 @@ func ParseTCPAddr(tryAddr string, defaultAddr string) (string, error) {
|
|
|
return "", fmt.Errorf("Invalid proto, expected tcp: %s", tryAddr)
|
|
|
}
|
|
|
|
|
|
- u, err := url.Parse("tcp://" + addr)
|
|
|
+ defaultAddr = strings.TrimPrefix(defaultAddr, "tcp://")
|
|
|
+ defaultHost, defaultPort, err := net.SplitHostPort(defaultAddr)
|
|
|
if err != nil {
|
|
|
return "", err
|
|
|
}
|
|
|
+ // url.Parse fails for trailing colon on IPv6 brackets on Go 1.5, but
|
|
|
+ // not 1.4. See https://github.com/golang/go/issues/12200 and
|
|
|
+ // https://github.com/golang/go/issues/6530.
|
|
|
+ if strings.HasSuffix(addr, "]:") {
|
|
|
+ addr += defaultPort
|
|
|
+ }
|
|
|
|
|
|
- host, port, err := net.SplitHostPort(u.Host)
|
|
|
+ u, err := url.Parse("tcp://" + addr)
|
|
|
if err != nil {
|
|
|
- return "", fmt.Errorf("Invalid bind address format: %s", tryAddr)
|
|
|
+ return "", err
|
|
|
}
|
|
|
|
|
|
- defaultAddr = strings.TrimPrefix(defaultAddr, "tcp://")
|
|
|
- defaultHost, defaultPort, err := net.SplitHostPort(defaultAddr)
|
|
|
+ host, port, err := net.SplitHostPort(u.Host)
|
|
|
if err != nil {
|
|
|
- return "", err
|
|
|
+ return "", fmt.Errorf("Invalid bind address format: %s", tryAddr)
|
|
|
}
|
|
|
|
|
|
if host == "" {
|