Skip to content

Conversation

@arturobernalg
Copy link
Member

Refactor inbound stream lifecycle to be RFC-conformant: reservation (PUSH_PROMISE) vs activation (first HEADERS). Enforce the inbound concurrency limit atomically at activation; refuse overflow with RST_STREAM(REFUSED_STREAM) while draining any outstanding header block.

@ok2c maybe this can work.

ok2c and others added 3 commits September 10, 2025 12:01
Reserve on PUSH_PROMISE; count on first HEADERS; refuse with RST_STREAM.
Atomic gate in H2Streams; safe CONTINUATION drain; idempotent localReset.
@ok2c ok2c force-pushed the master branch 5 times, most recently from 8fb1d8e to bf7d524 Compare September 13, 2025 16:38
@ok2c
Copy link
Member

ok2c commented Sep 13, 2025

@arturobernalg I am sorry this change-set came while I was working on the same problem. I ended up with a different solution that takes two atomic integers only instead of two concurrent sets to keep track of active H2 streams. It should be somewhat more efficient but admittedly took a lot of effort on my part to get right. And it also works with both inbound and outbound streams.

Please review my code in master and submit any RFC conformance improvements I may have missed.

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.

2 participants