Loading src/quic.cpp +60 −27 Original line number Diff line number Diff line Loading @@ -4436,7 +4436,38 @@ void quic::processStreamFrame(const uint8_t* data, size_t len, size_t& offset) { &data[src_off], copy_len); } // Track received range — merge with adjacent/overlapping ranges // Track received range — merge with adjacent/overlapping ranges. // // Fast path for the overwhelmingly common case (in-order delivery, // no reordering/loss in flight): recv_ranges holds exactly one // entry starting at 0, and this frame only extends or overlaps it. // The general path below handles this correctly too, but always // pays for a fresh insert plus an erase+erase+insert merge cycle // (4 red-black-tree node operations) even though nothing here is // actually out of order — this path does the same net update // (grow the sole [0, recv_contiguous) range) in one erase + one // insert instead. bool handled_by_fast_path = false; if (stream.recv_ranges.size() <= 1) { if (stream.recv_ranges.empty()) { if (stream_offset == 0) { stream.recv_ranges.insert({0, end_offset}); handled_by_fast_path = true; } } else { auto& only = *stream.recv_ranges.begin(); if (only.first == 0 && stream_offset <= only.second) { uint64_t new_hi = std::max(only.second, end_offset); if (new_hi != only.second) { stream.recv_ranges.erase(stream.recv_ranges.begin()); stream.recv_ranges.insert({0, new_hi}); } handled_by_fast_path = true; } } } if (!handled_by_fast_path) { auto new_range = std::make_pair(stream_offset, end_offset); auto it = stream.recv_ranges.insert(new_range).first; Loading Loading @@ -4467,6 +4498,8 @@ void quic::processStreamFrame(const uint8_t* data, size_t len, size_t& offset) { break; } } } // Update contiguous byte count if (!stream.recv_ranges.empty() && stream.recv_ranges.begin()->first == 0) { Loading Loading
src/quic.cpp +60 −27 Original line number Diff line number Diff line Loading @@ -4436,7 +4436,38 @@ void quic::processStreamFrame(const uint8_t* data, size_t len, size_t& offset) { &data[src_off], copy_len); } // Track received range — merge with adjacent/overlapping ranges // Track received range — merge with adjacent/overlapping ranges. // // Fast path for the overwhelmingly common case (in-order delivery, // no reordering/loss in flight): recv_ranges holds exactly one // entry starting at 0, and this frame only extends or overlaps it. // The general path below handles this correctly too, but always // pays for a fresh insert plus an erase+erase+insert merge cycle // (4 red-black-tree node operations) even though nothing here is // actually out of order — this path does the same net update // (grow the sole [0, recv_contiguous) range) in one erase + one // insert instead. bool handled_by_fast_path = false; if (stream.recv_ranges.size() <= 1) { if (stream.recv_ranges.empty()) { if (stream_offset == 0) { stream.recv_ranges.insert({0, end_offset}); handled_by_fast_path = true; } } else { auto& only = *stream.recv_ranges.begin(); if (only.first == 0 && stream_offset <= only.second) { uint64_t new_hi = std::max(only.second, end_offset); if (new_hi != only.second) { stream.recv_ranges.erase(stream.recv_ranges.begin()); stream.recv_ranges.insert({0, new_hi}); } handled_by_fast_path = true; } } } if (!handled_by_fast_path) { auto new_range = std::make_pair(stream_offset, end_offset); auto it = stream.recv_ranges.insert(new_range).first; Loading Loading @@ -4467,6 +4498,8 @@ void quic::processStreamFrame(const uint8_t* data, size_t len, size_t& offset) { break; } } } // Update contiguous byte count if (!stream.recv_ranges.empty() && stream.recv_ranges.begin()->first == 0) { Loading