]> Cypherpunks.ru repositories - gostls13.git/commit
net/http: guarantee that the Transport dial functions are respected in js/wasm
authorNeil Alexander <neilalexander@users.noreply.github.com>
Fri, 3 Sep 2021 21:07:22 +0000 (21:07 +0000)
committerDamien Neil <dneil@google.com>
Thu, 28 Oct 2021 17:57:57 +0000 (17:57 +0000)
commit266626211e40d1f2c3a34fa4cd2023f5310cbd7d
tree12d22ceba0951d6e8351d46fbc845d354c3d7837
parent31249688487ca3a60f856ad082d4e84c4d5f79fb
net/http: guarantee that the Transport dial functions are respected in js/wasm

The net/http package has a documented contract that if DialContext, DialDLSContext, Dial or DialTLS are specified in an instance of Transport, that they will be used to set up the connection. If they are not specified, then a reasonable fallback is made (e.g. using the net package).

This is ordinarily true, except for when compiling for the js/wasm target, where the browser's Fetch API is preferred in all cases (except for when it is undefined/unavailable) and therefore the dial functions are all ignored. As a result, the http.Transport implementation under js/wasm doesn't meet that contract.

This PR updates the RoundTrip behaviour of http.Transport so that if DialContext, DialTLSContext, Dial or DialTLS are specified, they are used as expected. The Fetch API will be used as a fallback if they are not specified.

Fixes #27495

Change-Id: I88c6eb6ffdd077827b421d606f3e60ebdafd538f
GitHub-Last-Rev: 948a0ed97ec4661f03cd346335f1d3d180f4c1ae
GitHub-Pull-Request: golang/go#46923
Reviewed-on: https://go-review.googlesource.com/c/go/+/330852
Reviewed-by: Damien Neil <dneil@google.com>
Trust: Damien Neil <dneil@google.com>
Trust: Carlos Amedee <carlos@golang.org>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
AUTHORS
CONTRIBUTORS
src/net/http/roundtrip_js.go
src/net/http/transport.go
src/net/http/transport_default_js.go [new file with mode: 0644]
src/net/http/transport_default_other.go [new file with mode: 0644]