Closed Bug 1429973 Opened 7 years ago Closed 7 years ago

Make sure HTTP trailers can be received over H2

Categories

(Core :: Networking: HTTP, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
mozilla60
Tracking Status
firefox59 - wontfix
firefox60 - fixed

People

(Reporter: kershaw, Assigned: u408661)

References

Details

(Whiteboard: [necko-triaged])

Attachments

(4 files)

See bug 1413999 comment #59. We have to make sure that server-timing trailers also works for h2.
Set the priority to P3, since chrome doesn't support server-timing trailers.
Priority: P2 → P3
this is a feature we want for server-timing despite chrome's support.
Priority: P3 → P2
the temptation will be to implement this with the normal h2->h1-semantic stuff that's already going on (i.e. the way we serialize h1 headers from hpack and let the h1 parser reparse them.. but we currently turn h2 streams into h1 EOF terminated streams for delimiters.. which is really efficient. the temptation might be to turn them into h1 chunked streams so we could just reuse the trailer parser, but I don't really think the overhead of the chunk parser is a great idea (it does a lot of memmoves.. there's a bug open on that, but thankfully its pretty much over taken by events with the rise of h2). so instead I think just some special case QI needs to be done somewhere.. sorry that's not real helpful - its more of a please "don't do it this way" than a hint on what to do..
I'm going to take this one. I had the same idea as you, Pat - avoid the chunked parser.
Assignee: kershaw → hurley
Blocks: 1436601
Tracking this for 59/60. Do you intend to try to fix this or un-whitelist the (or some) tests for 59?
Flags: needinfo?(hurley)
No, this won't be worth trying to get into 59. None of this is exposed up to the DOM yet, everything that's landed (including the HTTPS-limiting) is necko-only. I've only just un-bitrotted the DOM patches enough to start testing to ensure everything's flowing as it should, but that was a very hacky un-bitrotting, and there's one known bug with those patches that I haven't even started in on. So long as this lands before the DOM patches (which it will), there's no need to rush this one.
Flags: needinfo?(hurley)
Comment on attachment 8951388 [details] Bug 1429973 part 1 - plumb through trailers in h2 to support server-timing. https://reviewboard.mozilla.org/r/220658/#review226630 Code analysis found 1 defect in this patch: - 1 defect found by clang-tidy You can run this analysis locally with: - `./mach static-analysis check path/to/file.cpp` (C/C++) If you see a problem in this automated review, please report it here: http://bit.ly/2y9N9Vx ::: netwerk/protocol/http/nsHttpTransaction.cpp:2460 (Diff revision 1) > + newline = len; > + } > + > + int32_t end = aTrailers[newline - 1] == '\r' ? newline - 1 : newline; > + nsDependentCSubstring line(aTrailers, cur, end); > + nsHttpAtom hdr = {0}; Warning: Use nullptr [clang-tidy: modernize-use-nullptr] nsHttpAtom hdr = {0}; ^ nullptr
Attachment #8951387 - Flags: review?(mcmanus)
Attachment #8951388 - Flags: review?(mcmanus)
Attachment #8951389 - Flags: review?(mcmanus)
Attachment #8951390 - Flags: review?(mcmanus)
Attachment #8951387 - Flags: review?(mcmanus) → review?(daniel)
Attachment #8951388 - Flags: review?(mcmanus) → review?(daniel)
Attachment #8951389 - Flags: review?(mcmanus) → review?(daniel)
Attachment #8951390 - Flags: review?(mcmanus) → review?(daniel)
Comment on attachment 8951387 [details] Bug 1429973 part 0 - Update node-http2 to v3.3.8 for required bugfix. https://reviewboard.mozilla.org/r/220656/#review228524
Attachment #8951387 - Flags: review?(daniel) → review+
Comment on attachment 8951388 [details] Bug 1429973 part 1 - plumb through trailers in h2 to support server-timing. https://reviewboard.mozilla.org/r/220658/#review228526 ::: netwerk/protocol/http/Http2Stream.cpp:1153 (Diff revision 3) > +Http2Stream::ConvertResponseTrailers(Http2Decompressor *decompressor, > + nsACString &aTrailersIn) > +{ > + LOG3(("Http2Stream::ConvertResponseTrailers %p", this)); > + nsAutoCString flatTrailers; > + flatTrailers.SetCapacity(aTrailersIn.Length() + 512); Can we have a comment about the magic number 512 in here?
Attachment #8951388 - Flags: review?(daniel) → review+
Attachment #8951389 - Flags: review?(daniel) → review+
Comment on attachment 8951390 [details] Bug 1429973 part 3 - Remove hidden pref to allow plaintext server-timing. https://reviewboard.mozilla.org/r/220662/#review228530
Attachment #8951390 - Flags: review?(daniel) → review+
Comment on attachment 8951388 [details] Bug 1429973 part 1 - plumb through trailers in h2 to support server-timing. https://reviewboard.mozilla.org/r/220658/#review228526 > Can we have a comment about the magic number 512 in here? Heh, it's cargo-culted from the other Convert*Headers methods. I'll add a comment on each one, just for completeness. (To be clear - I don't know *why* we use 512, other than to give some amount of space to expand into without reallocating. Why 512 specifically was chosen is unclear.)
Pushed by hurley@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/8438cc4db770 part 0 - Update node-http2 to v3.3.8 for required bugfix. r=bagder https://hg.mozilla.org/integration/autoland/rev/446096b9960d part 1 - plumb through trailers in h2 to support server-timing. r=bagder https://hg.mozilla.org/integration/autoland/rev/4bc56ae6d0fe part 2 - Move server-timing tests into http/2. r=bagder https://hg.mozilla.org/integration/autoland/rev/69c3b8eeba63 part 3 - Remove hidden pref to allow plaintext server-timing. r=bagder
Regressions: 1566482
Regressions: 1566465
No longer regressions: 1566465
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: