From: Tomas Mraz Date: Thu, 10 Nov 2022 16:13:36 +0000 (+0100) Subject: Update Stream Receive Buffers design document with implementation details X-Git-Tag: openssl-3.2.0-alpha1~1737 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f3072212c2d56cae598bc1d180b2673b3df9be0;p=thirdparty%2Fopenssl.git Update Stream Receive Buffers design document with implementation details Reviewed-by: Matt Caswell Reviewed-by: Hugo Landau (Merged from https://github.com/openssl/openssl/pull/19351) --- diff --git a/doc/designs/quic-design/stream-receive-buffers.md b/doc/designs/quic-design/stream-receive-buffers.md index 2de8cd02e2c..a1ce4a37ebc 100644 --- a/doc/designs/quic-design/stream-receive-buffers.md +++ b/doc/designs/quic-design/stream-receive-buffers.md @@ -96,7 +96,21 @@ below. Details TBD. Implementation details ---------------------- -TBD +The QUIC_RSTREAM object holds the received stream data in the SFRAME_LIST +structure. This is a sorted list of partially (never fully) overlapping +data frames. Each list item holds a pointer to the received packet +wrapper for refcounting and proper release of the received packet +data once the stream data is read by the application. + +Each SFRAME_LIST item has range.start and range.end values greater +than the range.start and range.end values of the previous item in the list. +This invariant is ensured on the insertion of overlapping stream frames. +Any redundant frames are released. Insertion at the end of the list +is optimised as in the ideal situation when no packets are lost we +always just append new frames. + +See `include/internal/quic_stream.h` and `include/internal/quic_sf_list.h` +for internal API details. Other considerations --------------------