aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJinwen Wo <wojinwen@huawei.com>2021-10-07 17:24:47 +0000
committerBryan C. Mills <bcmills@google.com>2021-10-07 19:56:19 +0000
commit4ab3c1065eb38b90247f7ad46160fc5bb07ca2ed (patch)
treec16c058f6e0dba6044825634bf06e4a339f1b83d /src
parent7286502b0d225b995d391c72efbaa7690ad023a9 (diff)
downloadgo-4ab3c1065eb38b90247f7ad46160fc5bb07ca2ed.tar.xz
cmd/go/internal/web: improve IP check testing on ipv6 env
The existing implementation lacks consideration of running test on a machine which has ipv6 address but no ipv4 address. Use net.IP.IsLoopback and net.IP.IsUnspecified instead of hardcoded addresses. Fixes: #48575 This PR will be imported into Gerrit with the title and first comment (this text) used to generate the subject and body of the Gerrit change. Change-Id: I9c3c26d2ba13c7a24065751b59a1e002098ed654 GitHub-Last-Rev: fc45adbf7b944122d8f07bd451a8eeed1e69140c GitHub-Pull-Request: golang/go#48850 Reviewed-on: https://go-review.googlesource.com/c/go/+/354609 Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Jay Conrod <jayconrod@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Jay Conrod <jayconrod@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/go/internal/web/http.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/cmd/go/internal/web/http.go b/src/cmd/go/internal/web/http.go
index f177278eba..81f841d2c6 100644
--- a/src/cmd/go/internal/web/http.go
+++ b/src/cmd/go/internal/web/http.go
@@ -17,6 +17,7 @@ import (
"errors"
"fmt"
"mime"
+ "net"
"net/http"
urlpkg "net/url"
"os"
@@ -84,8 +85,15 @@ func get(security SecurityMode, url *urlpkg.URL) (*Response, error) {
if url.Host == "localhost.localdev" {
return nil, fmt.Errorf("no such host localhost.localdev")
}
- if os.Getenv("TESTGONETWORK") == "panic" && !strings.HasPrefix(url.Host, "127.0.0.1") && !strings.HasPrefix(url.Host, "0.0.0.0") {
- panic("use of network: " + url.String())
+ if os.Getenv("TESTGONETWORK") == "panic" {
+ host := url.Host
+ if h, _, err := net.SplitHostPort(url.Host); err == nil && h != "" {
+ host = h
+ }
+ addr := net.ParseIP(host)
+ if addr == nil || (!addr.IsLoopback() && !addr.IsUnspecified()) {
+ panic("use of network: " + url.String())
+ }
}
fetch := func(url *urlpkg.URL) (*urlpkg.URL, *http.Response, error) {