aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/server.go
AgeCommit message (Collapse)Author
2017-03-22net/http: improve speed of default muxKenny Grant
The DefaultServeMux included in net/http uses a map to store routes, but iterates all keys for every request to allow longer paths. This change checks the map for an exact match first. To check performance was better, BenchmarkServeMux has been added - this adds >100 routes and checks the matches. Exact matches are faster and more predictable on this benchmark and on most existing package benchmarks. https://perf.golang.org/search?q=upload:20170312.1 ServeMux-4 2.02ms ± 2% 0.04ms ± 2% −98.08% (p=0.004 n=5+6) https://perf.golang.org/search?q=upload:20170312.2 ReadRequestChrome-4 184MB/s ± 8% 186MB/s ± 1% ~ ReadRequestCurl-4 45.0MB/s ± 1% 46.2MB/s ± 1% +2.71% Read...Apachebench-4 45.8MB/s ±13% 48.7MB/s ± 1% ~ ReadRequestSiege-4 63.6MB/s ± 5% 69.2MB/s ± 1% +8.75% ReadRequestWrk-4 30.9MB/s ± 9% 34.4MB/s ± 2% +11.25% Change-Id: I8afafcb956f07197419d545a9f1c03ecaa307384 Reviewed-on: https://go-review.googlesource.com/38057 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-02-17all: fix a few typos in commentsKoki Ide
Change-Id: I0455ffaa51c661803d8013c7961910f920d3c3cc Reviewed-on: https://go-review.googlesource.com/37043 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-14net/http: document ErrServerClosedKale Blankenship
Fixes #19085 Change-Id: Ib11b9a22ea8092aca9e1c9c36b1fb015dd555c4b Reviewed-on: https://go-review.googlesource.com/36943 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-08net/http: don't modify Request in StripPrefixDmitri Shuralyov
As of https://golang.org/cl/21530, rules are updated to state that Handlers shouldn't modify the provided Request. This change updates StripPrefix to follow that rule. Resolves #18952. Change-Id: I29bbb580722e871131fa75a97e6e038ec64fdfcd Reviewed-on: https://go-review.googlesource.com/36483 Reviewed-by: Matt Layher <mdlayher@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Matt Layher <mdlayher@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-01-13net/http: make sure Hijack's bufio.Reader includes pre-read background byteBrad Fitzpatrick
Previously, if the Hijack called stopped the background read call which read a byte, that byte was sitting in memory, buffered, ready to be Read by Hijack's returned bufio.Reader, but it wasn't yet in the bufio.Reader's buffer itself, so bufio.Reader.Buffered() reported 1 byte fewer. This matters for callers who wanted to stitch together any buffered data (with bufio.Reader.Peek(bufio.Reader.Buffered())) with Hijack's returned net.Conn. Otherwise there was no way for callers to know a byte was read. Change-Id: Id7cb0a0a33fe2f33d79250e13dbaa9c0f7abba13 Reviewed-on: https://go-review.googlesource.com/35232 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2017-01-07net/http: don't do a background read if we've already done oneIan Lance Taylor
Fixes #18535 Change-Id: I9e49d33ce357a534529a6b0fcdbc09ff4fa98622 Reviewed-on: https://go-review.googlesource.com/34920 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-01-04net/http: make Server cancel its ReadTimeout between requestsBrad Fitzpatrick
Fixes #18447 Change-Id: I5d60c3632a5ce625d3bac9d85533ce689e301707 Reviewed-on: https://go-review.googlesource.com/34813 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-30net/http: remove logging on bad client requestsKenny Grant
As discussed in #18095 the server should not log for bad user input. Change-Id: I628a796926eff3a971e5b04abec17ea377c3f9b7 Reviewed-on: https://go-review.googlesource.com/33617 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-24net/http: fix receiver for Server.Shutdown and Server.CloseDan Peterson
Change-Id: Ia27ca728bafcf20d001b477787b21d16ae12960d Reviewed-on: https://go-review.googlesource.com/33552 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-11net/http: make Server respect shutdown state after handler finishesBrad Fitzpatrick
If the Server's Shutdown (or SetKeepAlivesEnabled) method was called while a connection was in a Handler, but after the headers had been written, the connection was not later closed. Fixes #9478 Updates #17754 (reverts that workaround) Change-Id: I65324ab8217373fbb38e12e2b8bffd0a91806072 Reviewed-on: https://go-review.googlesource.com/33141 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-11net/http: make Server log on bad requests from clientsKenny Grant
Fixes #12745 Change-Id: Iebb7c97cb5b68dc080644d796a6ca1c120d41b26 Reviewed-on: https://go-review.googlesource.com/27950 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-10net/http: update bundled http2 for ErrAbortHandler support, document it moreBrad Fitzpatrick
Updates http2 to x/net/http2 git rev 0e2717d for: http2: conditionally log stacks from panics in Server Handlers like net/http https://golang.org/cl/33102 Fixes #17790 Change-Id: Idd3f0c65540398d41b412a33f1d80de3f7f31409 Reviewed-on: https://go-review.googlesource.com/33103 Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2016-11-10net/http: add ErrAbortHandler, make Server quiet if used as panic valueBrad Fitzpatrick
Add an explicit way for Handlers to abort their response to the client and also not spam their error log with stack traces. panic(nil) also worked in the past (for http1 at least), so continue to make that work (and test it). But ErrAbortHandler is more explicit. Updates #17790 (needs http2 updates also) Change-Id: Ib1456905b27e2ae8cf04c0983dc73e314a4a751e Reviewed-on: https://go-review.googlesource.com/33099 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-10net/http: document that Server.Close and Shutdown don't track hijacked connsBrad Fitzpatrick
Fixes #17721 Change-Id: I19fd81c9909a22b01a4dc9c75f3f0e069c8608ca Reviewed-on: https://go-review.googlesource.com/33095 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-10net/http: fix documentation on Server.TLSNextProto controlling http2Brad Fitzpatrick
Server.TLSNextProto being nil is necessary but not sufficient but http2 being automatically enabled. Fixes #16588 Change-Id: I5b18690582f9b12ef05b58235e1eaa52483be285 Reviewed-on: https://go-review.googlesource.com/33090 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-10net/http: fix Server.Close double LockBrad Fitzpatrick
Fixes #17878 Change-Id: I062ac514239068c58175c9ee7964b3590f956a82 Reviewed-on: https://go-review.googlesource.com/33026 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-04net/http: fix type name in commentBrad Fitzpatrick
Change-Id: Ia03f993287d2929f35b4c92d00fe25c7243bd8b3 Reviewed-on: https://go-review.googlesource.com/32685 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2016-11-01net/http, net/http/httptest: make http2's TrailerPrefix work for http1Brad Fitzpatrick
Go's http1 implementation originally had a mechanism to send HTTP trailers based on pre-declaring the trailer keys whose values you'd later let after the header was written. http2 copied the same mechanism, but it was found to be unsufficient for gRPC's wire protocol. A second trailer mechanism was added later (but only to http2) for handlers that want to send a trailer without knowing in advance they'd need to. Copy the same mechanism back to http1 and document it. Fixes #15754 Change-Id: I8c40d55e28b0e5b7087d3d1a904a392c56ee1f9b Reviewed-on: https://go-review.googlesource.com/32479 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-01net/http: add Server.Close & Server.Shutdown for forced & graceful shutdownBrad Fitzpatrick
Also updates x/net/http2 to git rev 541150 for: http2: add support for graceful shutdown of Server https://golang.org/cl/32412 http2: make http2.Server access http1's Server via an interface check https://golang.org/cl/32417 Fixes #4674 Fixes #9478 Change-Id: I8021a18dee0ef2fe3946ac1776d2b10d3d429052 Reviewed-on: https://go-review.googlesource.com/32329 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-26net/http: add Server.ReadHeaderTimeout, IdleTimeout, document WriteTimeoutBrad Fitzpatrick
Updates #14204 Updates #16450 Updates #16100 Change-Id: Ic283bcec008a8e0bfbcfd8531d30fffe71052531 Reviewed-on: https://go-review.googlesource.com/32024 Reviewed-by: Tom Bergan <tombergan@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-22net/http: add NoBody, don't return nil from NewRequest on zero bodiesBrad Fitzpatrick
This is an alternate solution to https://golang.org/cl/31445 Instead of making NewRequest return a request with Request.Body == nil to signal a zero byte body, add a well-known variable that means explicitly zero. Too many tests inside Google (and presumably the outside world) broke. Change-Id: I78f6ecca8e8aa1e12179c234ccfb6bcf0ee29ba8 Reviewed-on: https://go-review.googlesource.com/31726 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2016-10-21net/http: make Redirect escape non-ASCII in Location headerBrad Fitzpatrick
Only ASCII is permitted there. Fixes #4385 Change-Id: I63708b04a041cdada0fdfc1f2308fcb66889a27b Reviewed-on: https://go-review.googlesource.com/31732 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-18net/http: make Server Handler's Request.Context be done on conn errorsBrad Fitzpatrick
This CL changes how the http1 Server reads from the client. The goal of this change is to make the Request.Context given to Server Handlers become done when the TCP connection dies (has seen any read or write error). I didn't finish that for Go 1.7 when Context was added to http package. We can't notice the peer disconnect unless we're blocked in a Read call, though, and previously we were only doing read calls as needed, when reading the body or the next request. One exception to that was the old pre-context CloseNotifier mechanism. The implementation of CloseNotifier has always been tricky. The past few releases have contained the complexity and moved the reading-from-TCP-conn logic into the "connReader" type. This CL extends connReader to make sure that it's always blocked in a Read call, at least once the request body has been fully consumed. In the process, this deletes all the old CloseNotify code and unifies it with the context cancelation code. The two notification mechanisms are nearly identical, except the CloseNotify path always notifies on the arrival of pipelined HTTP/1 requests. We might want to change that in a subsequent commit. I left a TODO for that. For now there's no change in behavior except that the context now cancels as it was supposed to. As a bonus that fell out for free, a Handler can now use CloseNotifier and Hijack together in the same request now. Fixes #15224 (make http1 Server always in a Read, like http2) Fixes #15927 (cancel context when underlying connection closes) Updates #9763 (CloseNotifier + Hijack) Change-Id: I972cf6ecbab7f1230efe8cc971e89f8e6e56196b Reviewed-on: https://go-review.googlesource.com/31173 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-17net/http: add more docs on ErrHijackedBrad Fitzpatrick
Updates #16456 Change-Id: Ifea651ea3ece2267a6f0c1638181d6ddd9248a9f Reviewed-on: https://go-review.googlesource.com/31181 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-13net/http: allow Handlers to test Hijacked conn without spamming error logBrad Fitzpatrick
Make a zero-byte write to a hijacked connection not log anything, so handlers can test whether a connection is hacked by doing a Write(nil). Fixes #16456 Change-Id: Id56caf822c8592067bd8422672f0c1aec89e866c Reviewed-on: https://go-review.googlesource.com/30812 Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2016-10-10net/http: fix typo in server commontEmmanuel Odeke
Change-Id: I5b04ba7e12eff933fc67eb7a1cbdfde536e4db88 Reviewed-on: https://go-review.googlesource.com/30722 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-30net/http: remove TODO about the Server's base contextBrad Fitzpatrick
I decided not to expand the API for this per discusion on #16220. Fixes #16220 Change-Id: I65cb2eacd4ec28c79438a8f7c30024524a484ce6 Reviewed-on: https://go-review.googlesource.com/30082 Reviewed-by: Daniel Theophanes <kardianos@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-07-27net/http: fix data race with concurrent use of Server.ServeBrad Fitzpatrick
Fixes #16505 Change-Id: I0afabcc8b1be3a5dbee59946b0c44d4c00a28d71 Reviewed-on: https://go-review.googlesource.com/25280 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Chris Broadfoot <cbro@golang.org>
2016-07-13all: rename vendored golang.org/x/net packages to golang_orgBrad Fitzpatrick
Regression from Go 1.6 to Go 1.7rc1: we had broken the ability for users to vendor "golang.org/x/net/http2" or "golang.org/x/net/route" because we were vendoring them ourselves and cmd/go and cmd/compile do not understand multiple vendor directories across multiple GOPATH workspaces (e.g. user's $GOPATH and default $GOROOT). As a short-term fix, since fixing cmd/go and cmd/compile is too invasive at this point in the cycle, just rename "golang.org" to "golang_org" for the standard library's vendored copy. Fixes #16333 Change-Id: I9bfaed91e9f7d4ca6bab07befe80d71d437a21af Reviewed-on: https://go-review.googlesource.com/24902 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-07-11net/http: fix vet warning of leaked context in error pathsBrad Fitzpatrick
Updates #16230 Change-Id: Ie38f85419c41c00108f8843960280428a39789b5 Reviewed-on: https://go-review.googlesource.com/24850 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-06-28net/http: conditionally configure HTTP/2 in Server.Serve(Listener)Brad Fitzpatrick
Don't configure HTTP/2 in http.Server.Serve(net.Listener) if the Server's TLSConfig is set and doesn't include the "h2" NextProto value. This avoids mutating a *tls.Config already in use if previously passed to tls.NewListener. Also document this. (it's come up a few times now) Fixes #15908 Change-Id: I283eed82fdb29a791f80d801aadd9f75db244de0 Reviewed-on: https://go-review.googlesource.com/24508 Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-06-27net/http: reject faux HTTP/0.9 and HTTP/2+ requestsBrad Fitzpatrick
Fixes #16197 Change-Id: Icaabacbb22bc18c52b9e04b47385ac5325fcccd1 Reviewed-on: https://go-review.googlesource.com/24505 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-06-15net/http: pass through server side Transfer-Encoding headersAndrew Gerrand
Fixes #16063 Change-Id: I2e8695beb657b0aef067e83f086828d8857787ed Reviewed-on: https://go-review.googlesource.com/24130 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-06-06net/http: send StatusOK on empty body with TimeoutHandlerAndrew Gerrand
Fixes #15948 Change-Id: Idd79859b3e98d61cd4e3ef9caa5d3b2524fd026a Reviewed-on: https://go-review.googlesource.com/23810 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-06-06net/http: send one Transfer-Encoding header when "chunked" set manuallyAndrew Gerrand
Fixes #15960 Change-Id: I7503f6ede33e6a1a93cee811d40f7b297edf47bc Reviewed-on: https://go-review.googlesource.com/23811 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-05-19net/http: update bundled http2Brad Fitzpatrick
Updates x/net/http2 to git rev 5916dcb1 for: * http2, lex/httplex: make Transport reject bogus headers before sending https://golang.org/cl/23229 * http2: reject more trailer values https://golang.org/cl/23230 Fixes #14048 Fixes #14188 Change-Id: Iaa8beca6e005267a3e849a10013eb424a882f2bb Reviewed-on: https://go-review.googlesource.com/23234 Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-05-16net/http: mention ALPN in http.Server.TLSNextProto documentationDan Peterson
Make clear negotiation can happen via NPN or ALPN, similar to http.Transport.TLSNextProto and x/net/http2.NextProtoTLS. Change-Id: Ied00b842bc04e11159d6d2107beda921cefbc6ca Reviewed-on: https://go-review.googlesource.com/23108 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-05-11net/http: keep HTTP/1.0 keep-alive conns open if response can't have a bodyBrad Fitzpatrick
Fixes #15647 Change-Id: I588bfa4eb336d1da1fcda8d06e32ed13c0b51c70 Reviewed-on: https://go-review.googlesource.com/23061 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-05-11net/http: document ResponseWriter read-vs-write concurrency rulesBrad Fitzpatrick
Summary: Go's HTTP/1.x server closes the request body once writes are flushed. Go's HTTP/2 server supports concurrent read & write. Added a TODO to make the HTTP/1.x server also support concurrent read+write. But for now, document it. Updates #15527 Change-Id: I81f7354923d37bfc1632629679c75c06a62bb584 Reviewed-on: https://go-review.googlesource.com/23011 Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-05-01net/http: provide access to the listener address an HTTP request arrived onBrad Fitzpatrick
This adds a context key named LocalAddrContextKey (for now, see #15229) to let users access the net.Addr of the net.Listener that accepted the connection that sent an HTTP request. This is similar to ServerContextKey which provides access to the *Server. (A Server may have multiple Listeners) Fixes #6732 Change-Id: I74296307b68aaaab8df7ad4a143e11b5227b5e62 Reviewed-on: https://go-review.googlesource.com/22672 Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-05-01net/http: document some errors more, mark ErrWriteAfterFlush as unusedBrad Fitzpatrick
Fixes #15150 Change-Id: I1a892d5b0516a37dac050d3bb448e0a2571db16e Reviewed-on: https://go-review.googlesource.com/22658 Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-30net/http: expand documentation of Server.MaxHeaderBytesBrad Fitzpatrick
Clarify that it includes the RFC 7230 "request-line". Fixes #15494 Change-Id: I9cc5dd5f2d85ebf903229539208cec4da5c38d04 Reviewed-on: https://go-review.googlesource.com/22656 Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-18net/http: document Hijacker and Flusher moreBrad Fitzpatrick
Fixes #15312 Change-Id: I4fabef3f21081bc4b020069851b5c2504bc6b4d8 Reviewed-on: https://go-review.googlesource.com/22122 Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-12all: standardize RFC mention formatDan Peterson
Standardize on space between "RFC" and number. Additionally change the couple "a RFC" instances to "an RFC." Fixes #15258 Change-Id: I2b17ecd06be07dfbb4207c690f52a59ea9b04808 Reviewed-on: https://go-review.googlesource.com/21902 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-04-11net/http: add ServerContextKey to let a handler access its ServerBrad Fitzpatrick
Fixes #12438 Updates #15229 (to decide context key variable naming convention) Change-Id: I3ba423e91b689e232143247d044495a12c97a7d2 Reviewed-on: https://go-review.googlesource.com/21829 Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-04-11net/http: document Error does not end the requestDan Peterson
Fixes #15205 Change-Id: Ia650806756758ca8ed2272b1696e59b809b16c61 Reviewed-on: https://go-review.googlesource.com/21836 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-04-11net/http: set the Request context for incoming server requestsBrad Fitzpatrick
Updates #13021 Updates #15224 Change-Id: Ia3cd608bb887fcfd8d81b035fa57bd5eb8edf09b Reviewed-on: https://go-review.googlesource.com/21810 Reviewed-by: Andrew Gerrand <adg@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-04-06net/http: document that Handlers shouldn't mutate RequestBrad Fitzpatrick
Also, don't read from the Request.Headers in the http Server code once ServeHTTP has started. This is partially redundant with documenting that handlers shouldn't mutate request, but: the space is free due to bool packing, it's faster to do the checks once instead of N times in writeChunk, and it's a little nicer to code which previously didn't play by the unwritten rules. But I'm not going to fix all the cases. Fixes #14940 Change-Id: I612a8826b41c8682b59515081c590c512ee6949e Reviewed-on: https://go-review.googlesource.com/21530 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-05net/http: zero pad Response status codes to three digitsBrad Fitzpatrick
Go 1.6's HTTP/1.x Transport started enforcing that responses have 3 status digits, per the spec, but we could still write out invalid status codes ourselves if the called ResponseWriter.WriteHeader(0). That is bogus anyway, since the minimum status code is 1xx, but be a little bit less bogus (and consistent) and zero pad our responses. Change-Id: I6883901fd95073cb72f6b74035cabf1a79c35e1c Reviewed-on: https://go-review.googlesource.com/19130 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-01net/http: limit Transport's reading of response header bytes from serversBrad Fitzpatrick
The default is 10MB, like http2, but can be configured with a new field http.Transport.MaxResponseHeaderBytes. Fixes #9115 Change-Id: I01808ac631ce4794ef2b0dfc391ed51cf951ceb1 Reviewed-on: https://go-review.googlesource.com/21329 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>