Draft: draft-ietf-quic-http

Commentary: Clarify reserved values for stream types , settings identifiers , frame types , and error codes . 0x1f N + 0x21 for the value of N = -1 is 0x02 . Literal interpretation of the current text includes this as a reserved value . The parenthetical examples given in Section 11.2 make it clear that this was not the intention , rendering this PR editorial . The main motivation of this PR is not that the current text is inconsistent , but that parenthetical examples from 11.2 are necessary to correctly interpret the definitions in sections 6.2.3 , 7.2.4.1 , 7.2.8 , and 8.1 . Alternative wordings could be : " 0x1f N + 0x21 for N = 0 , 1 , 2 , ... " " 0x1f N + 0x02 for positive integer values of N " " 0x1f N + 0x02 for N = 1 , 2 , 3 , ... " " 0x21 , 0x21 + 0x1f , 0x21 + 2 * 0x1f , ... " " a value of at least 0x21 with a remainder of 0x02 modulo 0x1f " " a value of at least 0x21 that is congruent to 0x21 modulo 0x1f " none of which is better than what this PR proposes .
Paragraph (version A):
Stream types of the format "0x1f * N + 0x21" for integer values of N
are reserved to exercise the requirement that unknown types be
ignored.  These streams have no semantics, and can be sent when
application-layer padding is desired.  They MAY also be sent on
connections where no data is currently being transferred.  Endpoints
MUST NOT consider these streams to have any meaning upon receipt.
Paragraph (version B):
Stream types of the format "0x1f * N + 0x21" for non-negative integer
values of N are reserved to exercise the requirement that unknown
types be ignored.  These streams have no semantics, and can be sent
when application-layer padding is desired.  They MAY also be sent on
connections where no data is currently being transferred.  Endpoints
MUST NOT consider these streams to have any meaning upon receipt.
Paragraph (version A):
Setting identifiers of the format "0x1f * N + 0x21" for integer
values of N are reserved to exercise the requirement that unknown
identifiers be ignored.  Such settings have no defined meaning.
Endpoints SHOULD include at least one such setting in their SETTINGS
frame.  Endpoints MUST NOT consider such settings to have any meaning
upon receipt.
Paragraph (version B):
Setting identifiers of the format "0x1f * N + 0x21" for non-negative
integer values of N are reserved to exercise the requirement that
unknown identifiers be ignored.  Such settings have no defined
meaning.  Endpoints SHOULD include at least one such setting in their
SETTINGS frame.  Endpoints MUST NOT consider such settings to have
any meaning upon receipt.
Paragraph (version A):
Frame types of the format "0x1f * N + 0x21" for integer values of N
are reserved to exercise the requirement that unknown types be
ignored (extensions).  These frames have no semantics, and can be
sent on any open stream when application-layer padding is desired.
They MAY also be sent on connections where no data is currently being
transferred.  Endpoints MUST NOT consider these frames to have any
meaning upon receipt.
Paragraph (version B):
Frame types of the format "0x1f * N + 0x21" for non-negative integer
values of N are reserved to exercise the requirement that unknown
types be ignored (extensions).  These frames have no semantics, and
can be sent on any open stream when application-layer padding is
desired.  They MAY also be sent on connections where no data is
currently being transferred.  Endpoints MUST NOT consider these
frames to have any meaning upon receipt.
Paragraph (version A):
Error codes of the format "0x1f * N + 0x21" for integer values of N
are reserved to exercise the requirement that unknown error codes be
treated as equivalent to H3_NO_ERROR (extensions).  Implementations
SHOULD select an error code from this space with some probability
when they would have sent H3_NO_ERROR.
Paragraph (version B):
Error codes of the format "0x1f * N + 0x21" for non-negative integer
values of N are reserved to exercise the requirement that unknown
error codes be treated as equivalent to H3_NO_ERROR (extensions).
Implementations SHOULD select an error code from this space with some
probability when they would have sent H3_NO_ERROR.