summaryrefslogtreecommitdiff
path: root/network/wsNetwork.go
diff options
context:
space:
mode:
Diffstat (limited to 'network/wsNetwork.go')
-rw-r--r--network/wsNetwork.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/network/wsNetwork.go b/network/wsNetwork.go
index 0a0006531..ace79c5b0 100644
--- a/network/wsNetwork.go
+++ b/network/wsNetwork.go
@@ -1913,6 +1913,8 @@ var errBcastQFull = errors.New("broadcast queue full")
var errURLNoHost = errors.New("could not parse a host from url")
+var errURLColonHost = errors.New("host name starts with a colon")
+
// HostColonPortPattern matches "^[-a-zA-Z0-9.]+:\\d+$" e.g. "foo.com.:1234"
var HostColonPortPattern = regexp.MustCompile("^[-a-zA-Z0-9.]+:\\d+$")
@@ -1937,6 +1939,11 @@ func ParseHostOrURL(addr string) (*url.URL, error) {
// This turns "[::]:4601" into "http://[::]:4601" which url.Parse can do
parsed, e2 := url.Parse("http://" + addr)
if e2 == nil {
+ // https://datatracker.ietf.org/doc/html/rfc1123#section-2
+ // first character is relaxed to allow either a letter or a digit
+ if parsed.Host[0] == ':' && (len(parsed.Host) < 2 || parsed.Host[1] != ':') {
+ return nil, errURLColonHost
+ }
return parsed, nil
}
return parsed, err /* return original err, not our prefix altered try */