]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: correct use of byte slice in js syscall
authorJohan Brandhorst <johan.brandhorst@gmail.com>
Thu, 12 Jul 2018 16:32:02 +0000 (16:32 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 13 Jul 2018 14:52:22 +0000 (14:52 +0000)
syscall/js does not allow []byte to be used in direct inputs to
its JavaScript manipulation methods since
https://github.com/golang/go/commit/bafe466a9537d8ea5ac5767504628803302ebb12.
Unfortunately, this use of a byte slice was missed, so any
uses of the WASM Roundtripper with a body will panic.
This ensures the byte slice is appropriately converted
before being passed to syscall.

Fixes #26349

Change-Id: I83847645d71ce310c1eee3decddbac990fae166b
GitHub-Last-Rev: 3914bda2ff457deba4b76182a48d26ce8948b4cb
GitHub-Pull-Request: golang/go#26350
Reviewed-on: https://go-review.googlesource.com/123537
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Richard Musiol <neelance@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/net/http/roundtrip_js.go

index 336c413cea23c8422213b9d51adb37c717645ecc..cb4a4392b5198543e2af34f534b4d22d414e7408 100644 (file)
@@ -60,7 +60,9 @@ func (t *Transport) RoundTrip(req *Request) (*Response, error) {
                        return nil, err
                }
                req.Body.Close()
-               opt.Set("body", body)
+               a := js.TypedArrayOf(body)
+               defer a.Release()
+               opt.Set("body", a)
        }
        respPromise := js.Global().Call("fetch", req.URL.String(), opt)
        var (