-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
x/net/http2: HTTP/2 conformance failures using h2spec #25023
Comments
I see similar failures even without strict mode. Only difference is that in my runs 6.9.1 passes but 5.1x6 fails. ping @bradfitz. |
Running against http2.golang.org gives same success grade 137/146, but slightly different failures. (Though, I'm guessing caddyserver.com is using a newer version.) In terms of priority:
Probably best to keep this as one issue which each CL |
These would be nice to fix but I don't think any of them are critical. It's nice that we do better than I agree let's just keep this one bug for all of them. /cc @tombergan |
Change https://golang.org/cl/111675 mentions this issue: |
Change https://golang.org/cl/111676 mentions this issue: |
Change https://golang.org/cl/111677 mentions this issue: |
Change https://golang.org/cl/111678 mentions this issue: |
Change https://golang.org/cl/111679 mentions this issue: |
Change https://golang.org/cl/111680 mentions this issue: |
Change https://golang.org/cl/111681 mentions this issue: |
Dynamic table size updates must occur at the beginning of the first header block. Updates golang/go#25023 Change-Id: I7fd4f191da0a97cab26666545191460a6f6c1433 Reviewed-on: https://go-review.googlesource.com/111681 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Updates golang/go#25023 Change-Id: Icd37dfef1b9558b0e774f1637c5566fb444666d5 Reviewed-on: https://go-review.googlesource.com/111679 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Change https://golang.org/cl/121415 mentions this issue: |
Correct overflow detection when going negative. Updates golang/go#25023 Change-Id: Ic2ddb7ee757f081d1826bfbbfd884e2b7e819335 Reviewed-on: https://go-review.googlesource.com/111675 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
…ader In Go's HTTP/1.x Server, a "Connection: close" response from a handler results in the TCP connection being closed. In HTTP/2, a "Connection" header is illegal and we weren't previously handling it, generating malformed responses to clients. (This is one of our violations listed in golang/go#25023) There was also a feature request in golang/go#20977 for a way for HTTP/2 handlers to close the connection after the response. Since we already close the connection for "Connection: close" for HTTP/1.x, do the same for HTTP/2 and map it to a graceful GOAWAY errcode=NO response. Updates golang/go#25023 (improves 8.1.2.2. Connection-Specific Header Fields) Updates golang/go#20977 (fixes after vendor into std) Change-Id: Iefb33ea73be616052533080c63b54ae679b1d154 Reviewed-on: https://go-review.googlesource.com/121415 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Headers received on a half closed remote stream must respond with a stream error of type STREAM_CLOSED. Updates golang/go#25023 Change-Id: Ia369b24318aec6df769ecf0911d5152459bb25b2 Reviewed-on: https://go-review.googlesource.com/111677 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Change https://golang.org/cl/122877 mentions this issue: |
Updates http2 to x/net/http2 git rev 292b43b for: http2: reject incoming HEADERS in Server on half-closed streams https://golang.org/cl/111677 Updates #25023 Change-Id: I479ae9b5b899fb0202e6301d02535fb6aeb4997a Reviewed-on: https://go-review.googlesource.com/122877 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Can we get an updated summary of where we're at on this bug using the latest (master) code? |
Data sent on a closed stream is treated as a connection error of type STREAM_CLOSED. Updates golang/go#25023 Change-Id: I3a94414101ec08c7a3f20d49cefc0367af18017f Reviewed-on: https://go-review.googlesource.com/111676 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Sure
|
Okay, at this point we have few enough, let's file separate bugs for them, with titles of the form:
@fraenkel, you want to file those? IIRC, one of those @fraenkel already identified as a bug in the h2spec test. If so, let's file the bug anyway just for reference and we can contact the h2spec authors to get it fixed. |
HTTP 8.1.2.x is https://go-review.googlesource.com/c/net/+/111680 HTTP 4.2.3 is an incorrect test, it is using the wrong frame size, see https://go-review.googlesource.com/c/net/+/111678 HPACK 4.2.1 I need to investigate. We have a fix in place but either its not being triggered or it could be a sequencing issue. Will go do some digging... |
Hmm, I just ran the latest h2specs with Go 1.10.3 + latest http2 and Go 1.11(tip) and got different results than above as well as between the 2 releases and between runs. I will see anywhere from 3 - 6 failures. |
The most errors I see are below. HTTP/2 6.10, HTTP/2 8.1.2.2.1 and HTTP/2 8.1.2.2.2 always occur.
|
@fraenkel, thanks. I'm going to close this meta bug, but if you or others open other h2spec bugs, feel free to reference this bug in the new bug, or reference the new bug from this bug so they're all linked together. (Or we can search for "h2spec", too.) |
Change https://golang.org/cl/123515 mentions this issue: |
Updates bundled x/net/http2 to git rev cffdcf67 for: http2: use GetBody unconditionally on Transport retry, when available https://golang.org/cl/123476 http2: a closed stream cannot receive data https://golang.org/cl/111676 Updates #25009 Updates #25023 Change-Id: I84f50cc50c0fa5a3c34f0037a9cb1ef468e5f0d9 Reviewed-on: https://go-review.googlesource.com/123515 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Change https://golang.org/cl/127355 mentions this issue: |
Updates bundled golang.org/x/net/http2/hpack to x/net git rev 22bb95c5e for: http2/hpack: lazily build huffman table on first use https://golang.org/cl/127275 http2/hpack: reduce memory for huffman decoding table https://golang.org/cl/127235 http2/hpack: dynamic table updates must occur first https://golang.org/cl/111681 And a typo & gofmt CL. Updates #25023 Change-Id: I7027fdb4982305aa671d811fe87f61e5df0f8e0e Reviewed-on: https://go-review.googlesource.com/127355 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Andrew Bonventre <andybons@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Change https://golang.org/cl/153977 mentions this issue: |
Change https://golang.org/cl/153978 mentions this issue: |
dynamic table size updates must occur at the beginning of the first header block. The original fix, golang/go#25023, guaranteed it was at the beginning of the very first block. The Close method implicitly marked the end of the current header. We now document the Close behavior and can track when we are at the beginning of the first block. Updates golang/go#29187 Change-Id: I83ec39546527cb17d7de8a88ec417a46443d2baa Reviewed-on: https://go-review.googlesource.com/c/153978 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This reverts CL 111676 for golang/go#25023. Reason for revert: The code change no longer issued a WindowUpdate which is required when processing data. The original issue found in golang/go#25023 is not present after the revert. Updates golang/go#28204 Change-Id: Iadbb63d50ca06df1281e699b9ef13181d0593f80 Reviewed-on: https://go-review.googlesource.com/c/153977 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
What version of Go are you using (
go version
)?go version 1.10.1 linux/arm64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?What did you do?
What did you expect to see?
146 tests, 146 passed, 0 skipped, 0 failed
What did you see instead?
As a Caddy contributor, I'm redirecting the original issue caddyserver/caddy#2132 here because it's an upstream issue
cc @mholt @bazzadp
The text was updated successfully, but these errors were encountered: