-
Notifications
You must be signed in to change notification settings - Fork 938
Description
When the client exceeds the SETTINGS_MAX_FIELD_SECTION_SIZE, quiche closes the connection (!) with a H3_EXCESSIVE_LOAD error.
RFC 9114, Section 4.2.2 explains that the client might not have learned about the limit if the request goes through intermediaries, so exceeding the size is not necessarily a protocol violation.
If an implementation wishes to advise its peer of this limit, it can be conveyed as a number of bytes in the SETTINGS_MAX_FIELD_SECTION_SIZE parameter. An implementation that has received this parameter SHOULD NOT send an HTTP message header that exceeds the indicated size, as the peer will likely refuse to process it. However, an HTTP message can traverse one or more intermediaries before reaching the origin server; see Section 3.7 of HTTP. Because this limit is applied separately by each implementation that processes the message, messages below this limit are not guaranteed to be accepted.
Instead of closing the connection, quiche should probably just send a 431 status (and sending a STOP_SENDING for the stream). The RFC doesn't specify the reset error code, but I think both H3_EXCESSIVE_LOAD or H3_REQUEST_REJECTED would be appropriate.