diff options
author | Harshavardhana <hrshvardhana@gmail.com> | 2016-01-09 11:55:32 -0800 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2016-01-10 01:35:01 +0000 |
commit | 2747ca351efc2b9b0f1d0a7988c752f859feebb7 (patch) | |
tree | 9f9fa842e25b6060c1802b27829a1c7a9c180af7 | |
parent | 64e2a7170120f20f62d5c8b15da26be1ef18226e (diff) | |
download | go-2747ca351efc2b9b0f1d0a7988c752f859feebb7.tar.gz go-2747ca351efc2b9b0f1d0a7988c752f859feebb7.zip |
net/http: don't remove Expect Request header in Server.
Fixes #13893
Change-Id: I2577b38fdb19299227dc146f707cf9df663dcdfc
Reviewed-on: https://go-review.googlesource.com/18471
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-rw-r--r-- | src/net/http/serve_test.go | 27 | ||||
-rw-r--r-- | src/net/http/server.go | 1 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go index f36bb38ba7..00220b471c 100644 --- a/src/net/http/serve_test.go +++ b/src/net/http/serve_test.go @@ -3639,6 +3639,33 @@ func TestTolerateCRLFBeforeRequestLine(t *testing.T) { } } +func TestIssue13893_Expect100(t *testing.T) { + // test that the Server doesn't filter out Expect headers. + req := reqBytes(`PUT /readbody HTTP/1.1 +User-Agent: PycURL/7.22.0 +Host: 127.0.0.1:9000 +Accept: */* +Expect: 100-continue +Content-Length: 10 + +HelloWorld + +`) + var buf bytes.Buffer + conn := &rwTestConn{ + Reader: bytes.NewReader(req), + Writer: &buf, + closec: make(chan bool, 1), + } + ln := &oneConnListener{conn: conn} + go Serve(ln, HandlerFunc(func(w ResponseWriter, r *Request) { + if _, ok := r.Header["Expect"]; !ok { + t.Error("Expect header should not be filtered out") + } + })) + <-conn.closec +} + func TestIssue11549_Expect100(t *testing.T) { req := reqBytes(`PUT /readbody HTTP/1.1 User-Agent: PycURL/7.22.0 diff --git a/src/net/http/server.go b/src/net/http/server.go index ac7086c21e..19324d02c4 100644 --- a/src/net/http/server.go +++ b/src/net/http/server.go @@ -1452,7 +1452,6 @@ func (c *conn) serve() { // Wrap the Body reader with one that replies on the connection req.Body = &expectContinueReader{readCloser: req.Body, resp: w} } - req.Header.Del("Expect") } else if req.Header.get("Expect") != "" { w.sendExpectationFailed() return |