mirror of
https://github.com/nginx/nginx.git
synced 2026-10-24 22:57:43 -05:00
As per RFC 9000, Section 4.5: Once a final size for a stream is known, it cannot change. If a RESET_STREAM or STREAM frame is received indicating a change in the final size for the stream, an endpoint SHOULD respond with an error of type FINAL_SIZE_ERROR. A receiver SHOULD treat receipt of data at or beyond the final size as an error of type FINAL_SIZE_ERROR, even after a stream is closed. Previously, the stream final size was validated only after other checks that could return earlier and skip validation: the receive state check and, for STREAM frames, the check for data below the current receive offset. As a result, a STREAM or RESET_STREAM frame carrying a final size error was silently ignored once the receiving part of the stream had reached a state in which the frame would otherwise be discarded, or when a STREAM frame did not advance the receive offset. Now the final size is validated first, so a FINAL_SIZE_ERROR is generated in these cases as well.