aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/httputil/reverseproxy_test.go
diff options
context:
space:
mode:
authorJulien Salleyron <julien.salleyron@gmail.com>2019-01-02 16:29:49 +0000
committerBrad Fitzpatrick <bradfitz@golang.org>2019-01-02 17:00:30 +0000
commit2175177497b74a1be52cc98a892e4197973c4ea6 (patch)
treee0c2546d80650ee63081dab03f3d450629de6642 /src/net/http/httputil/reverseproxy_test.go
parent8962b71c4947cdc915ae6dd837e644e03d2e7435 (diff)
downloadgo-2175177497b74a1be52cc98a892e4197973c4ea6.tar.gz
go-2175177497b74a1be52cc98a892e4197973c4ea6.zip
net/http/httputil: fix missing previous headers in response when switching protocol in ReverseProxy
When using switching protocol, previous headers set before the reverse proxy are lost. Fixes #29407 Change-Id: Ia2b9784022d9bccef8625519ccbabbe8a276dfc0 GitHub-Last-Rev: 79bb493dcbb9b76d9d2ff9cd0854b29d634f8b73 GitHub-Pull-Request: golang/go#29408 Reviewed-on: https://go-review.googlesource.com/c/155741 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/net/http/httputil/reverseproxy_test.go')
-rw-r--r--src/net/http/httputil/reverseproxy_test.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/net/http/httputil/reverseproxy_test.go b/src/net/http/httputil/reverseproxy_test.go
index 5caa206066..bda569acc7 100644
--- a/src/net/http/httputil/reverseproxy_test.go
+++ b/src/net/http/httputil/reverseproxy_test.go
@@ -1013,7 +1013,12 @@ func TestReverseProxyWebSocket(t *testing.T) {
rproxy := NewSingleHostReverseProxy(backURL)
rproxy.ErrorLog = log.New(ioutil.Discard, "", 0) // quiet for tests
- frontendProxy := httptest.NewServer(rproxy)
+ handler := http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
+ rw.Header().Set("X-Header", "X-Value")
+ rproxy.ServeHTTP(rw, req)
+ })
+
+ frontendProxy := httptest.NewServer(handler)
defer frontendProxy.Close()
req, _ := http.NewRequest("GET", frontendProxy.URL, nil)
@@ -1028,6 +1033,13 @@ func TestReverseProxyWebSocket(t *testing.T) {
if res.StatusCode != 101 {
t.Fatalf("status = %v; want 101", res.Status)
}
+
+ got := res.Header.Get("X-Header")
+ want := "X-Value"
+ if got != want {
+ t.Errorf("Header(XHeader) = %q; want %q", got, want)
+ }
+
if upgradeType(res.Header) != "websocket" {
t.Fatalf("not websocket upgrade; got %#v", res.Header)
}
@@ -1042,8 +1054,8 @@ func TestReverseProxyWebSocket(t *testing.T) {
if !bs.Scan() {
t.Fatalf("Scan: %v", bs.Err())
}
- got := bs.Text()
- want := `backend got "Hello"`
+ got = bs.Text()
+ want = `backend got "Hello"`
if got != want {
t.Errorf("got %#q, want %#q", got, want)
}