-
Notifications
You must be signed in to change notification settings - Fork 43
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
"Connection" #144
Comments
A different term would help when discussing proxying in H2 or HQ, where a channel is carried over a stream. |
It is a defined term except where we are specifically describing TCP. We can fix the latter part easily. Using a different term would be a huge change, not only to our own specs but to all the ones downstream. Think of how many specs normatively refer to HTTP. If we do choose a different term, it can't be one already in use for framing. That means no channels, streams, frames, or anything else that might be in h3+. And it has to mean the same thing as the Connection defined term, since otherwise we have to add extra phrasing where it currently occurs. |
How many downstream specs refer to a HTTP connection? Hopefully none, since it's a stateless protocol. |
Also, I suspect that "stream" would work very well, since it's semantics in h2 and QUIC is what we're looking for. |
stream does not work -- that is a unidirectional term |
It's not unidirectional in H2, and only sometimes in QUIC (currently). Looking at Semantics again, it seems like the most minimal change we could make would be to:
H1-messaging will need to have similar changes; if the above is an acceptable approach overall, I'll do a PR for both. Thoughts? |
408 seems like it is generally applicable. I mean, h2/h3 might choose to reset a stream, but I imagine that 408 is still a valid choice for handling a laggardly client. The Section 2.1 text just needs to be recast so that it is version specific: All versions of HTTP use a connection for multiple request/response exchanges, but the manner in which they do so is version-specific. This includes how connections are established and managed, how requests and responses are correlated, all the details of encoding, and other aspects like cancellation and reliability. |
408 currently says:
In H2 you can't send the "close connection option; so, this text will need to change. WRT 2.1 - please go through and look at all of the uses of "connection" in the document; many of them refer to the specific HTTP request/response exchange path, not the underlying transport. |
For having dealt with this H1 vs H2 stuff very recently, I figured that we absolutely ought to remove any wording about the connection header in the version-agnostic parts. What is being said here for 408 is valid for every other responses in H1 in fact. We should instead stipulate in the H1 transport parts that whenever the response is expected to be the latest one on the connection, the server ought to add a "connection: close" header field so that the client immediately knows that possibly other outstanding requests were not processed. |
Taking another look at this, I think we can do an even more minimal approach (helped by the other work to remove h1-specific terminology and requirements, this isn't nearly as confusing, with a few small modifications). There is some remaining language in CONNECT that's not appropriate, but that should be covered by #183 and #340. |
Semantics uses "Connection" to mean both "the underlying transport-layer substrate" and "the logical channel that a particular request/response exchange uses" (roughly).
They are the same in H1, but not in H2 and later. Should we consider using a separate term for the latter (e.g., "channel")?
The text was updated successfully, but these errors were encountered: