Bump reqwest to 0.13.4 (hickory 0.26) and fix iterable fetch bodies#166
Conversation
undici's `fetch` (and the Dispatcher contract) deliver request bodies as async/sync iterables — even a `Uint8Array` body reaches the dispatcher as an async generator. `normalizeBody` only recognized string/Buffer/ Uint8Array/Readable/ReadableStream and dropped iterables to an empty body, so POST/PUT via `fetch` advertised a `content-length` with no body and hung. Adapt iterables to a `Readable` and buffer them like other Readable bodies. Adds regression tests for async-iterable, sync-iterable, and fetch POST. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
cargo update refreshes the lockfile (hickory-proto/resolver 0.25.2 → 0.26.1, hyper 1.9 → 1.10, rustls-native-certs, http, and ~25 more) and moves reqwest to 0.13.4. With hickory on 0.26.1 the RUSTSEC-2026-0118 and RUSTSEC-2026-0119 advisories no longer apply, so remove the cargo-deny ignores and the matching trivy GHSA-q2qq-hmj6-3wpp entry. cargo deny check and trivy fs both pass clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Changed Files
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
Code Review
This pull request upgrades several Rust dependencies, including bumping reqwest to 0.13.4 and upgrading hickory-proto and hickory-resolver to version 0.26.1. This upgrade resolves previous security advisories, allowing the removal of corresponding ignores in .trivyignore and deny.toml. Additionally, the Node.js agent is updated to support Iterable<Uint8Array> and AsyncIterable<Uint8Array> request bodies, with new integration tests added to verify these changes. I have no feedback to provide as there are no review comments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Greptile SummaryThis PR does two things: bumps reqwest to 0.13.4 (pulling hickory-proto/resolver to 0.26.1) which lets it drop the temporary
Confidence Score: 5/5Safe to merge — the iterable body fix is well-scoped, the dependency bumps are clean, and the advisory ignores being removed are genuinely resolved upstream. The iterable branch is inserted after all prior type guards so it only fires on true iterables; Readable.from handles both sync and async iterables correctly; the three new tests exercise every new code path including the real fetch flow. The dependency update is a routine lockfile refresh with no yanked crates. No files require special attention. Important Files Changed
Reviews (1): Last reviewed commit: "chore(deps): bump reqwest to 0.13.4, dro..." | Re-trigger Greptile |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Summary
Two related changes from the dependency-update pass:
chore(deps): bump reqwest to 0.13.4 + drop hickory advisory ignorescargo updaterefreshes the lockfile — hickory-proto/resolver 0.25.2 → 0.26.1, hyper 1.9 → 1.10, rustls-native-certs, http, and ~25 more — and moves reqwest 0.13.3 → 0.13.4.cargo-denyignores and the matching trivyGHSA-q2qq-hmj6-3wppentry are removed.cargo deny check(advisories/bans/licenses/sources) andtrivy fsboth pass clean with no ignores.fix(node): accept async/sync iterable request bodiesfetch(and theDispatchercontract) hand request bodies to the dispatcher as async/sync iterables — even aUint8Arraybody arrives as an async generator.normalizeBodyonly recognized string/Buffer/Uint8Array/Readable/ReadableStreamand silently dropped iterables to an empty body, so POST/PUT viafetchadvertised acontent-lengthwith no body and hung until timeout.Readableand buffer them like otherReadablebodies (matches undici's owntypeof obj[Symbol.asyncIterator] === "function"detection).fetchPOST through a node-reqwest dispatcher.Testing
cargo nextest run --workspace— 35 passedvitest run— 97 passed, 2 skipped (mitmproxy, needs external setup)cargo deny check+trivy fs— clean🤖 Generated with Claude Code