Skip to content

Commit

Permalink
net/http: use fake Transport network when running in Node
Browse files Browse the repository at this point in the history
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: 43d26af
GitHub-Pull-Request: #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>
  • Loading branch information
johanbrandhorst authored and bradfitz committed May 31, 2018
1 parent 33cd4fb commit 08e2e88
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions src/net/http/roundtrip_js.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 08e2e88

Please sign in to comment.