-
Notifications
You must be signed in to change notification settings - Fork 205
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
DUPLICATE_PUSH instead of multiple PUSH_PROMISE frames #2072
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that this is a net gain. It's going to be annoying to implement, but hopefully not too annoying.
draft-ietf-quic-http.md
Outdated
When a client request is first sent or a placeholder first allocated, the | ||
element is dependent on the root of the priority tree. Pushed streams are | ||
initially dependent on the client request on which the PUSH_PROMISE frame was | ||
sent. In all cases, elements are assigned an initial weight of 16. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a nice side-effect.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved to #2074 so I could do more priority-related changes without blocking on this, but I agree. :-)
fc9a95d
to
69a825d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lgtm, the saving in bandwidth and client processing are clear wins.
Fixes #1864, by only sending the request headers once and having a separate frame to pick them up by reference.
Also would have fixed #1959 along the way, as an added bonus.(Separated into new PR so I can fix some other PRIORITY things.)However, this is not an unmitigated improvement. The point of the ordering requirement for PUSH_PROMISE frames is that the client knows that a push is coming before they see references to a dependent resource and initiate their own requests. If reordering (or blocking QPACK references) places a DUPLICATE_PUSH ahead of the corresponding PUSH_PROMISE, knowing that the resource is on the way can no longer be guaranteed.