Unify and refactor frame type logic in receiving control stream. An error is signalled under exactly the same conditions, but the error code and message might change. In particular, a MAX_PUSH_ID or ACCEPT_CH frame received by the wrong endpoint as the first frame resulted in a QUIC_HTTP_MISSING_SETTINGS_FRAME, while a DATA or HEADERS as the first frame resulted in a QUIC_HTTP_FRAME_UNEXPECTED_ON_CONTROL_STREAM before this CL. After this CL, any forbidden frame type (for the endpoint) results in QUIC_HTTP_FRAME_UNEXPECTED_ON_CONTROL_STREAM. Error messages are also changed to make the code simpler. OnUnrecoverableError() (used 2 times) is exactly the same as stream_delegate()->OnStreamError() (used 9 times), this CL changes both occurrences of the former into the latter for consistency. HttpDecoder::Visitor methods for frame processing other than *Start() cannot be called for disallowed frames, this CL adds QUICHE_NOTREACHED() to document that. The motivation is to prepare for changing the SETTINGS frame logic to accomodate a SETTINGS frame in ALPS, see https://vasilvv.github.io/httpbis-alps/draft-vvv-httpbis-alps.html#name-use-of-alps-in-http-3. PiperOrigin-RevId: 358846826 Change-Id: I0f361fa9899f1bd558603b804a6aad6f4f38b218
QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects. QUICHE is only supported on little-endian platforms.
Code can be viewed in CodeSearch in Quiche and is imported into Chromium.