]> git.kaiwu.me - nginx.git/commit
HTTP/3: generate more H3_FRAME_UNEXPECTED.
authorRoman Arutyunyan <arut@nginx.com>
Fri, 11 Jun 2021 09:11:08 +0000 (12:11 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Fri, 11 Jun 2021 09:11:08 +0000 (12:11 +0300)
commit80a5227617924f666a39f8debf556ab525f420c9
treefaac47f4d79024f75ed8e1cbb6a6c49a4612f62d
parent9cf6426f6a517919863d0618e6c514f3f180cb8f
HTTP/3: generate more H3_FRAME_UNEXPECTED.

As per quic-http-34, these are the cases when this error should be generated:

   If an endpoint receives a second SETTINGS frame
   on the control stream, the endpoint MUST respond with a connection
   error of type H3_FRAME_UNEXPECTED

   SETTINGS frames MUST NOT be sent on any stream other than the control
   stream.  If an endpoint receives a SETTINGS frame on a different
   stream, the endpoint MUST respond with a connection error of type
   H3_FRAME_UNEXPECTED.

   A client MUST NOT send a PUSH_PROMISE frame.  A server MUST treat the
   receipt of a PUSH_PROMISE frame as a connection error of type
   H3_FRAME_UNEXPECTED; see Section 8.

   The MAX_PUSH_ID frame is always sent on the control stream.  Receipt
   of a MAX_PUSH_ID frame on any other stream MUST be treated as a
   connection error of type H3_FRAME_UNEXPECTED.

   Receipt of an invalid sequence of frames MUST be treated as a
   connection error of type H3_FRAME_UNEXPECTED; see Section 8.  In
   particular, a DATA frame before any HEADERS frame, or a HEADERS or
   DATA frame after the trailing HEADERS frame, is considered invalid.

   A CANCEL_PUSH frame is sent on the control stream.  Receiving a
   CANCEL_PUSH frame on a stream other than the control stream MUST be
   treated as a connection error of type H3_FRAME_UNEXPECTED.

   The GOAWAY frame is always sent on the control stream.
src/http/v3/ngx_http_v3_parse.c