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

Supporting the new document for HTTP/2 (RFC 9113) #128

Open
LPardue opened this issue Sep 2, 2022 · 1 comment
Open

Supporting the new document for HTTP/2 (RFC 9113) #128

LPardue opened this issue Sep 2, 2022 · 1 comment

Comments

@LPardue
Copy link

LPardue commented Sep 2, 2022

In June 2022, a whole set of new HTTP RFCs were published. Many of these were rewrites of existing specifications, alongside the new HTTP/3 and QPACK drafts. Part of this cluster of work was a rewrite of HTTP/2, published as RFC 9113, which obsoletes RFC 7540.

RFC 9113 is a rewrite that attempts to maintain a lot of what was already defined in HTTP/2. Changes are summarized in https://www.rfc-editor.org/rfc/rfc9113.html#appendix-B

Appendix B. Changes from RFC 7540

This revision includes the following substantive changes:

  • Use of TLS 1.3 was defined based on [RFC8740], which this document
    obsoletes.

  • The priority scheme defined in RFC 7540 is deprecated.
    Definitions for the format of the PRIORITY frame and the priority
    fields in the HEADERS frame have been retained, plus the rules
    governing when PRIORITY frames can be sent and received, but the
    semantics of these fields are only described in RFC 7540. The
    priority signaling scheme from RFC 7540 was not successful. Using
    the simpler signaling in [HTTP-PRIORITY] is recommended.

  • The HTTP/1.1 Upgrade mechanism is deprecated and no longer
    specified in this document. It was never widely deployed, with
    plaintext HTTP/2 users choosing to use the prior-knowledge
    implementation instead.

  • Validation for field names and values has been narrowed. The
    validation that is mandatory for intermediaries is precisely
    defined, and error reporting for requests has been amended to
    encourage sending 400-series status codes.

  • The ranges of codepoints for settings and frame types that were
    reserved for Experimental Use are now available for general use.

  • Connection-specific header fields -- which are prohibited -- are
    more precisely and comprehensively identified.

  • Host and ":authority" are no longer permitted to disagree.

  • Rules for sending Dynamic Table Size Update instructions after
    changes in settings have been clarified in Section 4.3.1.

Editorial changes are also included. In particular, changes to
terminology and document structure are in response to updates to core
HTTP semantics [HTTP]. Those documents now include some concepts
that were first defined in RFC 7540, such as the 421 status code or
connection coalescing.

I'd like to consider how h2spec and can be tweaked to accomodate both RFC 7540 and RFC 9113. I'm happy to volunteer some cycles but didn't want to start off in the wrong direction, hence opening this issue.

@nitely
Copy link

nitely commented Jul 17, 2024

Note section 5.1 close state changed:

An endpoint MUST NOT send frames other than PRIORITY on a closed stream. An endpoint MAY treat receipt of any other type of frame on a closed stream as a connection error (Section 5.4.1) of type STREAM_CLOSED, except as noted below.

Does this mean received frames on a closed stream no longer MUST be treated as stream/connection error depending on how it got closed (RST_STREAM/END_STREAM)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants