Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP/3 improvements, buffers and send hold #10772

wants to merge 1 commit into from


Copy link

@icing icing commented Mar 15, 2023

ngtcp2, using bufq as send and receive buffers

  • eliminating overflow buffer
  • eleminating stream->mem acrobatics
  • suspending uploads (KEEP_SEND_HOLD) while stream window is exhausted

quiche, using bufq for receiving

  • allows direct processing of quiche events
  • windows sizes adjusted to configured buffer sizes
  • all tests succeed with current quiche master
  • internalized the struct HTTP members for curl_quiche.c and removed them from struct HTTP.
  • fixed a bug in retrying request submitting, which quiche may block

@icing icing added HTTP/3 h3 or quic related Post-Curl-8-ntum labels Mar 15, 2023
@github-actions github-actions bot added the tests label Mar 15, 2023
@icing icing force-pushed the h3+bufq branch 3 times, most recently from 3164c51 to fa8ba5c Compare March 21, 2023 08:19
@icing icing changed the title ngctp2 improvements, buffers and send hold HTTP/3 improvements, buffers and send hold Mar 21, 2023
- ngtcp2: using bufq for recv stream data
- internal stream_ctx instead of `struct HTTP` members
  for quiche, ngtcp2 and msh3
- no more QUIC related members in `struct HTTP`
- experimental use of recvmmsg(), disabled by default
  - testing on my old debian box shows no throughput improvements.
  - leaving it in, but disabled, for future revisit
- vquic: common UDP receive code for ngtcp2 and quiche
- vquic: common UDP send code for ngtcp2 and quiche
- added pytest skips for known msh3 failures
- fix unit2601 to survive torture testing
- quiche: using latest `master` from quiche and enabling large download
  tests, now that key change is supported
- fixing test_07_21 where retry handling of starting a stream
  was faulty
- msh3: use bufq for recv buffering headers and data
- msh3: replace fprintf debug logging with LOG_CF where possible
- msh3: force QUIC expire timers on recv/send to have more than
  1 request per second served
Copy link

bagder commented Mar 31, 2023


@bagder bagder closed this in 544abee Mar 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
HTTP/3 h3 or quic related tests
None yet

Successfully merging this pull request may close these issues.

None yet

2 participants