Skip to content

Fix GRO redundancy at iq.ngtcp2 - #120

Merged
MDA2AV merged 4 commits into
mainfrom
ngtcp2-engine-fix-gro-redundancy
Aug 3, 2026
Merged

Fix GRO redundancy at iq.ngtcp2#120
MDA2AV merged 4 commits into
mainfrom
ngtcp2-engine-fix-gro-redundancy

Conversation

@MDA2AV

@MDA2AV MDA2AV commented Jul 26, 2026

Copy link
Copy Markdown
Owner

No description provided.

MDA2AV added 4 commits July 26, 2026 16:49
…cookies

ioxide.nghttp3 (renamed from ioxide.h3; ngtcp2 likewise from quic):
- streaming request bodies: RunStreamingAsync dispatches at end-of-headers and
  pulls the body through Nghttp3Request.BodyReader while the request stream is
  flow-control paced, so memory is bounded by one window instead of the body
- handler matrix made explicit: RunBufferedAsync (sync and async handlers) and
  RunStreamingAsync replace the overloaded RunAsync pair
- graceful shutdown: Nghttp3Connection.Shutdown() sends GOAWAY, finishes
  in-flight requests, then closes the connection with H3_NO_ERROR; new
  QuicConnection.Close(appErrorCode) backs it at the transport level
- QPACK dynamic table is now a knob (Nghttp3Options); +30% on cookie-heavy
  traffic, default stays 0 (nghttp3's own default)
- headers are a KeyValueList of ReadOnlyMemory<byte> pairs, cookies parse
  lazily off the cookie field lines (h3 may split one header across several)
- per-connection request pooling (object, arena, header list, body buffer) and
  a shared pre-ended body reader for bodyless requests
- trailer fix: a trailing HEADERS block no longer replaces the assembled request

ioxide.http3: new package, pure C# HTTP/3 (frames, QPACK static table, Huffman),
zero native dependencies, cross-validated against the nghttp3 client.

Both satellite packages reorganized into Connection/Http/Interop/native folders;
QUIC recv surface renamed (Delivery/TryGetDelivery/ReturnBuffer).

Playground: h3, h3-buffered and http3 modes, SIGTERM drain, routes demonstrating
static zero-allocation responses (1.98M req/s vs 1.65M for per-request encoding),
header walking and cookies.

e2e 43/0.
@MDA2AV
MDA2AV merged commit 7049ec8 into main Aug 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant