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

Barry Leiba's HTTP/3 Discuss 1 #4771

Closed
LPardue opened this issue Jan 20, 2021 · 5 comments · Fixed by #4747
Closed

Barry Leiba's HTTP/3 Discuss 1 #4771

LPardue opened this issue Jan 20, 2021 · 5 comments · Fixed by #4747
Labels
-http editorial An issue that does not affect the design of the protocol; does not require consensus. iesg An issue raised during IESG review.
Milestone

Comments

@LPardue
Copy link
Member

LPardue commented Jan 20, 2021

@barryleiba said

In Section 4.1.1 I’m confused by the combination of the following two
paragraphs, and would like to discuss what I’m missing:

Like HTTP/2, HTTP/3 does not use the Connection header field to
indicate connection-specific fields; in this protocol, connection-
specific metadata is conveyed by other means. An endpoint MUST NOT
generate an HTTP/3 field section containing connection-specific
fields; any message containing connection-specific fields MUST be
treated as malformed (Section 4.1.3).

...

This means that an intermediary transforming an HTTP/1.x message to
HTTP/3 will need to remove any fields nominated by the Connection
field, along with the Connection field itself. Such intermediaries
SHOULD also remove other connection-specific fields, such as Keep-
Alive, Proxy-Connection, Transfer-Encoding, and Upgrade, even if they
are not nominated by the Connection field.

Given the MUST in the first, how can the second only be SHOULD? Wouldn’t such
an intermediary, acting as the HTTP/3 client, be producing a malformed message
if it did not “remove other connection-specific fields”?

@LPardue LPardue added -http iesg An issue raised during IESG review. labels Jan 20, 2021
@LPardue LPardue added this to the http-iesg milestone Jan 20, 2021
@LPardue LPardue added this to Triage in Late Stage Processing via automation Jan 20, 2021
@MikeBishop
Copy link
Contributor

@barryleiba, This is text imported mostly-unchanged from RFC7540, but I'm always happy to improve upon the past. This point actually came up in the discussion of #4747, which is rewording that paragraph slightly, but your point would still remain with the new text.

The key is that HTTP fields are an extension point, and some fields are defined to have hop-by-hop semantics. The endpoint necessarily knows the meaning of all fields it generates, and so we can tell it that it MUST NOT generate a field with hop-by-hop semantics. However, the intermediary does not necessarily know the meaning of all fields some other endpoint sends through it. Another way to read this is "MUST remove all fields which are known to have hop-by-hop semantics, but we acknowledge you might miss some"; that's a difficult requirement to test. We've tended to use SHOULD for unenforceable MUSTs throughout these documents.

If you'd like to suggest a better way to phrase it, I'm open to incorporating it into #4747 or a follow-up.

@martinthomson
Copy link
Member

As @mnot pointed out in httpwg/http2-spec#804, the core HTTP spec now has the same rules, written more clearly. We should just reference them.

@barryleiba
Copy link

barryleiba commented Jan 20, 2021 via email

@MikeBishop
Copy link
Contributor

#4747 now includes the same text as httpwg/http2-spec#804.

@barryleiba
Copy link

barryleiba commented Jan 21, 2021 via email

@MikeBishop MikeBishop linked a pull request Jan 22, 2021 that will close this issue
@larseggert larseggert added the editorial An issue that does not affect the design of the protocol; does not require consensus. label Jan 26, 2021
@project-bot project-bot bot moved this from Triage to Editorial Issues in Late Stage Processing Jan 26, 2021
Late Stage Processing automation moved this from Editorial Issues to Issue Handled Jan 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-http editorial An issue that does not affect the design of the protocol; does not require consensus. iesg An issue raised during IESG review.
Projects
Late Stage Processing
  
Issue Handled
Development

Successfully merging a pull request may close this issue.

5 participants