Skip to content
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

QPACK settings in HTTP #1323

Closed
MikeBishop opened this issue Apr 24, 2018 · 4 comments
Closed

QPACK settings in HTTP #1323

MikeBishop opened this issue Apr 24, 2018 · 4 comments
Labels
-http -qpack editorial An issue that does not affect the design of the protocol; does not require consensus.

Comments

@MikeBishop
Copy link
Contributor

On #1143, @martinthomson said:

if -http depends on -qcram, I think that we need to define configuration parameters in -qcram and explain how the settings are used to set these parameters in -http. Right now the drafts are tightly coupled.

He's probably correct, but there appear to be enough ripple effects that I'd prefer to handle this change separately.

@MikeBishop MikeBishop added editorial An issue that does not affect the design of the protocol; does not require consensus. -http -qpack labels Apr 24, 2018
@MikeBishop
Copy link
Contributor Author

We can't really avoid them being tightly coupled -- at the very least, QPACK is defined for the payload of the HEADERS and PUSH_PROMISE frames. Those are used for HTTP concepts, so they can't very well be defined by the QPACK spec.

Another dependency that currently exists: HTTP has to reserve the unidirectional streams that QPACK needs. And that's probably okay, as there's an existing dependency we can't get rid of.

There is an intriguing (scary) possibility there, though.... If there were a stream header on unidirectional streams and new types could be added by extensions, QPACK could simply register the new stream types it wants. One less tight coupling, but one more extension point.

@martinthomson
Copy link
Member

You see, I like that idea. QPACK defines its requirements in terms of streams and HPACK uses those. It's a nice directed dependency arrangement. The service it provides (uncompressed HEADERS -> compressed HEADERS) is provided, but only if hq provides some settings and some streams. We might want to avoid having to put a type header on bidirectional streams though; no sense in being arbitrarily flexible.

BTW, think of what the CERTIFICATE frame stuff might do with its own stream...

@MikeBishop
Copy link
Contributor Author

The more I think about this, the more appealing it becomes, actually. Then the weird state machine from H2 with Server Push simply becomes one more type of extension-owned unidirectional stream, and if we wanted to pull Push out into an extension on its own, we could. Let me sketch this out, and we'll see how crazy it winds up being.

@LPardue
Copy link
Member

LPardue commented May 18, 2018 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-http -qpack editorial An issue that does not affect the design of the protocol; does not require consensus.
Projects
None yet
Development

No branches or pull requests

3 participants