Skip to content

Conversation

martenrichter
Copy link
Contributor

After the change the body parameter for all
created QuicStreams can take a ReadableStream
of Uint8Array, Arraybuffers etc..

We introduce a DataQueueFeeder class that may be
also used for other related mechanisms.

A locally created unidirectional Stream can not
have a reader. Therefore, the interface is changed
to handle this case. (undercovered when writing
the tests).

Furthermore, a ResumeStream must be added after
AddStream in QuicSession, as the ResumeStream
beforehand triggered with set_outbound is a no-op,
as Stream was not added to Session beforehand.

Fixes: #60234

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Oct 12, 2025
@martenrichter
Copy link
Contributor Author

@jasnell This try to add support for streams for outgoing data. I hope the PR is helpful and does not waste too much time. I have contributed long time ago 1-2 patches, but I am not that fluent with the node.js codebase.

After the change the body parameter for all
created QuicStreams can take a ReadableStream
of Uint8Array, Arraybuffers etc..

We introduce a DataQueueFeeder class, that may be
also used for other related mechanisms.

A locally created unidirectional Stream can not
have a reader. Therefore the interface is changed
to handle this case. (undercovered when writing
 the tests).

Furthermore, a ResumeStream must be added After
AddStream in QuicSession, as the ResumeStream
beforehand triggered with set_outbound is a no-op,
as Stream was not added to Session beforehand.

Fixes: nodejs#60234
Copy link

codecov bot commented Oct 12, 2025

Codecov Report

❌ Patch coverage is 69.63351% with 58 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.75%. Comparing base (3ac88a7) to head (ffa7338).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
src/quic/streams.cc 60.90% 25 Missing and 18 partials ⚠️
src/dataqueue/queue.cc 61.29% 11 Missing and 1 partial ⚠️
src/quic/streams.h 66.66% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #60237      +/-   ##
==========================================
+ Coverage   88.54%   88.75%   +0.21%     
==========================================
  Files         704      704              
  Lines      208123   208314     +191     
  Branches    40006    40073      +67     
==========================================
+ Hits       184280   184890     +610     
+ Misses      15877    15350     -527     
- Partials     7966     8074     +108     
Files with missing lines Coverage Δ
lib/internal/quic/quic.js 100.00% <100.00%> (ø)
src/quic/bindingdata.h 33.33% <ø> (ø)
src/quic/quic.cc 100.00% <100.00%> (ø)
src/quic/session.cc 37.64% <100.00%> (+8.55%) ⬆️
src/quic/streams.h 46.15% <66.66%> (+46.15%) ⬆️
src/dataqueue/queue.cc 67.96% <61.29%> (+3.32%) ⬆️
src/quic/streams.cc 34.59% <60.90%> (+31.39%) ⬆️

... and 54 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@martenrichter
Copy link
Contributor Author

There is a crash on some platforms. TODO for next weekend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

quic: body is lacking support for streaming

2 participants