Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This mirrors the gRPC-Web test cases that also handle different forms of trailers in responses.
These weren't originally included because I didn't think they would work: I thought that the "net/http" server would encode these on the wire in HTTP/2 using a HEADER frame (without END_STREAM flag) followed by an empty DATA frame (with END_STREAM flag). But the gRPC spec (and Google's implementations) require a trailers-only response in HTTP/2 be a single HEADER frame with END_STREAM flag set.
However, I was mistaken: the Go "net/http" server does exactly what we need it to. It would only use two frames (i.e. a second, empty DATA frame) if the handler flushes the
http.ResponseWriter
before it returns. So I didn't have to actually touch the reference server for this to work. 🎉