Add HTTP/2 support with transparent ALPN negotiation#305
Draft
tonyfettes wants to merge 2 commits intomainfrom
Draft
Add HTTP/2 support with transparent ALPN negotiation#305tonyfettes wants to merge 2 commits intomainfrom
tonyfettes wants to merge 2 commits intomainfrom
Conversation
Pull Request Test Coverage Report for Build 76Details
💛 - Coveralls |
- Add HPACK header compression (RFC 7541) with Huffman coding
- Add HTTP/2 framing, flow control, settings, and stream management
- Add H2ClientConnection and H2ServerConnection with background read loops
- Integrate HTTP/2 into existing HTTP client/server via ALPN ("h2"/"http/1.1")
- Add ALPN support for both OpenSSL and Windows SChannel
- Add HTTP/2 trailer support and stream accessors
- Fix use-after-free in TLS read loop after connection close
… hang When a socket was closed via IoHandle::close(), the fd was removed from evloop.fds before closesocket() was called. The subsequent IOCP completion for cancelled I/O was silently dropped by poll() because the fd was no longer in the fds map, leaving coroutines in protect_from_cancel(suspend()) waiting forever.
06c0ced to
4332632
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
src/hpack/): static/dynamic tables, Huffman coding, encoder/decoder per RFC 7541src/http2/): frame parsing/serialization, settings negotiation, flow control with coroutine suspension, stream multiplexing, connection management with background read loopExisting HTTP/1.1 behavior is unchanged. JS backend unaffected (uses native fetch which already supports h2).
Test plan
🤖 Generated with Claude Code