Skip to content

v0.2.10

Latest

Choose a tag to compare

@cursor cursor released this 09 Oct 00:18
a1642c5
  • Discarded DATA returns connection flow-control credit. A frame on a
    retired stream, a frame that exceeds the stream receive window, or DATA
    after the peer sent END_STREAM is counted against the connection window
    and answered with WINDOW_UPDATE (RFC 9113 §6.9). A retired stream whose
    frame exceeds the connection window is a FLOW_CONTROL_ERROR. Previously
    the peer's connection send window shrank on every cancelled call and the
    connection could stall.
  • One stream-slot predicate (StreamState.occupies_slot) now backs
    open_stream, the server's peer MAX_CONCURRENT_STREAMS check,
    live_stream_count, and retire_stream. The server no longer frees a
    peer stream's slot when only its own side has sent END_STREAM.
  • queue_rst_stream marks a known stream reset once the frame is queued.
    Readiness-driven resets now free the slot, and send_rst_stream keeps
    the stream reset when its flush fails with the frame still queued.
  • A peer SETTINGS_INITIAL_WINDOW_SIZE change that pushes a stream's send
    window above 2^31 - 1 is now a FLOW_CONTROL_ERROR connection error
    (RFC 9113 §6.9.2). Streams we have reset or finished sending on are
    exempt.
  • A request content-length must be one or more digits (RFC 9110 §8.6).
    A non-digit value is a stream PROTOCOL_ERROR. Previously Int() accepted
    signs, whitespace, and digit separators, and -1 matched the
    absent-header sentinel, so the body-length check was skipped.