FINAL_SIZE_ERROR
QUIC FINAL_SIZE_ERROR (0x06) is sent when the final size of a stream is inconsistent. A stream's final size is established when a STREAM frame with FIN is received. If a subsequent STREAM or RESET_STREAM frame claims a different final size, or if data is received beyond the established final size, the connection is terminated.
Code
0x06
Decimal
6
Standard
RFC 9000 §20
Description
Once a QUIC stream's FIN bit is set in a STREAM frame, that offset establishes the stream's final size. All data for the stream must fit within this size. Three conditions trigger FINAL_SIZE_ERROR: (1) receiving STREAM data at an offset beyond the established final size, (2) receiving RESET_STREAM with a final size smaller than already-received data, (3) receiving RESET_STREAM with a different final size than an already-established FIN offset. This error prevents ambiguity about stream completeness. QUIC's reliable delivery depends on knowing exactly how many bytes a stream contains. Changing the final size after it is established would break reassembly. FINAL_SIZE_ERROR indicates a serious bug in the sender's stream management. It should never occur in a correct QUIC implementation.
Common Causes
- –STREAM data received at offset beyond the FIN-established final size
- –RESET_STREAM with final size smaller than already-received stream data
- –RESET_STREAM with final size different from the FIN-established size
- –QUIC implementation bug in stream final size tracking