]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Update Stream Receive Buffers design document with implementation details
authorTomas Mraz <tomas@openssl.org>
Thu, 10 Nov 2022 16:13:36 +0000 (17:13 +0100)
committerHugo Landau <hlandau@openssl.org>
Mon, 14 Nov 2022 08:01:58 +0000 (08:01 +0000)
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19351)

doc/designs/quic-design/stream-receive-buffers.md

index 2de8cd02e2c3bfc99b3d38a04e184c4d4618bc6f..a1ce4a37ebc2936aeb1c8e6c1bec240a44eea063 100644 (file)
@@ -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
 --------------------