aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohan Brandhorst <johan.brandhorst@gmail.com>2018-05-31 10:12:32 +0000
committerBrad Fitzpatrick <bradfitz@golang.org>2018-05-31 15:13:02 +0000
commit08e2e880e72a173e6c1d3ff708fac2d3661ced89 (patch)
treed469824fb1c9f652f9828efb73c07e092d0a2217 /src
parent33cd4fba38b82693d7ffc62f50ea763694d4c8c3 (diff)
downloadgo-08e2e880e72a173e6c1d3ff708fac2d3661ced89.tar.xz
net/http: use fake Transport network when running in Node
Replaces the existing local loopback check with a check to see whether the program is being interpreted by Node. This means tests that are run with Node will use the fake network while still allowing users who are using js/wasm to talk to local networks. Updates #25506 Change-Id: I8bc3c6808fa29293b7ac5f77b186140c4ed90b51 GitHub-Last-Rev: 43d26af7bc716b7a01dd8f47d7a2c2a2df549489 GitHub-Pull-Request: golang/go#25663 Reviewed-on: https://go-review.googlesource.com/115495 Reviewed-by: Agniva De Sarker <agniva.quicksilver@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/net/http/roundtrip_js.go16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/net/http/roundtrip_js.go b/src/net/http/roundtrip_js.go
index e60b7368df..277fc7ed3b 100644
--- a/src/net/http/roundtrip_js.go
+++ b/src/net/http/roundtrip_js.go
@@ -11,14 +11,15 @@ import (
"fmt"
"io"
"io/ioutil"
- "net"
+ "os"
+ "path"
"strconv"
"syscall/js"
)
// RoundTrip implements the RoundTripper interface using the WHATWG Fetch API.
func (*Transport) RoundTrip(req *Request) (*Response, error) {
- if useFakeNetwork(req) {
+ if useFakeNetwork() {
return t.roundTrip(req)
}
headers := js.Global.Get("Headers").New()
@@ -135,15 +136,8 @@ func (*Transport) RoundTrip(req *Request) (*Response, error) {
// useFakeNetwork is used to determine whether the request is made
// by a test and should be made to use the fake in-memory network.
-func useFakeNetwork(req *Request) bool {
- host, _, err := net.SplitHostPort(req.Host)
- if err != nil {
- host = req.Host
- }
- if ip := net.ParseIP(host); ip != nil {
- return ip.IsLoopback(ip)
- }
- return host == "localhost"
+func useFakeNetwork() bool {
+ return len(os.Args) > 0 && path.Base(os.Args[0]) == "node"
}
// streamReader implements an io.ReadCloser wrapper for ReadableStream.