]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: don't remove Expect Request header in Server.
authorHarshavardhana <hrshvardhana@gmail.com>
Sat, 9 Jan 2016 19:55:32 +0000 (11:55 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sun, 10 Jan 2016 01:35:01 +0000 (01:35 +0000)
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>
src/net/http/serve_test.go
src/net/http/server.go

index f36bb38ba7d12aaf57fd0fbf627545d146db5bfd..00220b471ca04ed8a8eeb5a0a08d4de34136ca80 100644 (file)
@@ -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
index ac7086c21efdfec47cf287aaf9f0460aba4d66d1..19324d02c48e8149801116e245a5860f9a1e5227 100644 (file)
@@ -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