Open
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1248 +/- ##
==========================================
+ Coverage 82.78% 87.29% +4.51%
==========================================
Files 32 24 -8
Lines 3079 8864 +5785
==========================================
+ Hits 2549 7738 +5189
- Misses 530 1126 +596 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
2206cea to
e6b20cc
Compare
Add decoder limits for HPACK string length, header list size, and allowed table-size updates. Cap accumulated HTTP/2 header-block bytes on client and server paths, deriving server-side decode limits from max_header_bytes and adding targeted regressions for HPACK and both H2 directions.
Require the initial peer SETTINGS frame, propagate advertised header table and header list limits into encoder behavior, and reject unsupported server push explicitly. Teach the high-level client to maintain multiple reusable H2 connections per origin, respect MAX_CONCURRENT_STREAMS, and mark streams above GOAWAY last_stream_id with a targeted error instead of failing the whole connection generically. On the server side, process duplicate peer settings in order and apply outbound encoder constraints from client SETTINGS.
Allow legal request trailers on the server, preserve response trailers on the client, and reject trailer pseudo-headers on both sides. Keep trailer state per stream so response trailers are only published after body EOF, while request trailers become visible to handlers once the request body is fully consumed.
Fail illegal stream-id and connection-only frame placements in the HTTP/2 framer on both read and write paths instead of leaving them to higher-level state machines. Add explicit frame-level regressions for malformed DATA, HEADERS, PRIORITY, RST_STREAM, SETTINGS, PUSH_PROMISE, PING, GOAWAY, and CONTINUATION combinations.
e6b20cc to
45f44bc
Compare
Add URIs.jl parity for the high-level client API by accepting URI inputs across request/open helpers and constructing _URLParts directly from URI components. Also replace raw Threads.Atomic request-write flags with a private _RequestWriteState helper using @atomic fields so the transport keeps the same coordination behavior without the banned Atomic wrapper type.
Implement multi-level verbose client logging with compact lifecycle output at level 1 plus detailed dumps at levels 2 and 3. - capture exact HTTP/1 request and response wire bytes via teeing and _ConnReader hooks - emit best-effort HTTP/2 request and response message dumps - suppress compressed and other non-text bodies in verbose output - cover summaries, H1 wire capture, compressed-body suppression, and H2 dumps with regression tests
Introduce a typed request-scoped timeout config shared by request,
HTTP.open, and websocket handshakes.
Keep readtimeout as a deprecated alias that seeds the new timeout
settings while preserving the existing request/header timeout
behavior until deeper transport enforcement lands.
Verification:
- julia --project=. -e 'using Test; using HTTP; using Reseau; _http_windows_ci() = false; include("test/http_client_tests.jl")'
- julia --project=. test/http_websocket_client_tests.jl
Apply connect timeouts per request across HTTP/1, HTTP/2, and
websocket handshakes, including explicit-client calls.
Bound response header waits in the H1 transport, H2 stream header
wait path, and websocket handshake path.
Verification:
- julia --project=. -e 'using Test; using HTTP; using Reseau; _http_windows_ci() = false; include("test/http_client_tests.jl")'
- julia --project=. test/http_client_transport_tests.jl
- julia --project=. test/http_websocket_client_tests.jl
- julia --project=. test/http2_client_tests.jl
Make readtimeout a true deprecated alias for read inactivity and
separate it cleanly from overall request_timeout semantics.
Refresh H1 socket deadlines on body reads and request writes, and
bound H2 stream waits plus flow-control stalls with read/write
idle deadlines.
Verification:
- julia --project=. -e 'using Test; using HTTP; using Reseau; _http_windows_ci() = false; include("test/http_client_tests.jl")'
- julia --project=. test/http_client_transport_tests.jl
- julia --project=. test/http_websocket_client_tests.jl
- julia --project=. test/http2_client_tests.jl
Update the high-level request docstring so connect_timeout matches the implemented behavior across DNS, TCP, proxy CONNECT, TLS, and HTTP/2 setup. Verification: - julia --project=. test/runtests.jl
Refresh the client, server, protocol, and migration docs so they match the new timeout model and deprecation story. Call out the richer 2.0 timeout surface compared with HTTP.jl 1.x and the old master-era readtimeout/connect_timeout workflow. Verification: - julia --project=docs docs/make.jl
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
masterpackage tree to a clean 2.0 extraction baseline and port over the HTTP implementation from ReseauTesting
JULIA_NUM_THREADS=1 julia --project=. --startup-file=no --history-file=no -e 'using Pkg; Pkg.develop(path="/Users/jacob.quinn/.julia/dev/Reseau-split-worktree"); Pkg.instantiate(); Pkg.test(; coverage=true)'julia --project=docs --startup-file=no --history-file=no docs/make.jlCoverage
HTTP/src:6346/7630covered lines (83.17%)Migration and Breaking Changes
Notes
Pkg.developsJuliaServices/Reseau.jlatcodex/reseau-http-splitso this PR stays green before the sibling Reseau PR merges.