Skip to content

fix: backport upstream bug fixes across forked crates#149

Merged
deedy5 merged 5 commits into
mainfrom
dev
May 23, 2026
Merged

fix: backport upstream bug fixes across forked crates#149
deedy5 merged 5 commits into
mainfrom
dev

Conversation

@deedy5

@deedy5 deedy5 commented May 23, 2026

Copy link
Copy Markdown
Owner

Backport upstream fixes from hyperium/h2, hyperium/hyper, seanmonstar/reqwest,
and hyperium/hyper-util, plus a primp-python redirect race fix.

primp-python

  • Fix redirect policy race by applying policy on cloned client
    instead of shared client (avoid RwLock contention across await)
  • Remove redundant #[inline(always)] from get_runtime helper
  • Replace manual temp file cleanup with RAII TempFile helper

primp-h2 (based on upstream v0.4.14)

  • stream::set_reset: add missing notify_send() call
  • streams::recv_go_away: filter by stream initiator
  • streams: release connection flow control on DATA after GOAWAY
  • recv::poll_informational: guard against returning final responses
  • prioritize: discard buffered DATA when scheduled reset pending
  • send: return Pending instead of Ready(Ok(0)) on capacity exhaustion
  • streams: reject frames on idle streams per RFC 9113

primp-hyper (based on upstream v1.9.0)

  • dispatch: add SenderDropGuard to prevent silent data loss on mid-body drop
  • dispatch: fix missed write wakeup that could deadlock H1 dispatch
  • h2/mod: fix H2 capacity reservation deadlock on multiplexed streams
  • body/incoming: handle NO_ERROR in poll_trailers for early responses
  • decode: fix 32-bit overflow in large body size calculations

primp-reqwest (based on upstream v0.13.3)

  • redirect: add scheme check to remove_sensitive_headers (security fix)
  • response: include URL context in JSON decode error messages
  • dns/hickory: use get_or_try_init to propagate DNS init errors

primp-hyper-util (based on upstream v0.1.20)

  • Replace custom poll_fn/ready with std::future::poll_fn and std::task::ready
  • Delete common/future.rs, remove futures-core dependency
  • Add RPITIT precise capturing bounds (use<C, B>)
  • Replace futures_util::pin_mut with std::pin::pin!
  • Bump hyper 1.8→1.9, tighten socket2 range to 0.6

deedy5 added 5 commits May 23, 2026 14:04
- Fix redirect policy race condition by applying policy on cloned client
  instead of shared client, avoiding RwLock contention across await points
- Remove redundant #[inline(always)] from get_runtime helper
- Replace manual temp file cleanup with RAII TempFile helper in tests
- stream::set_reset: add missing notify_send() call
- streams::recv_go_away: filter by stream initiator
- streams: release connection flow control on DATA after GOAWAY
- recv::poll_informational: guard against returning final responses
- prioritize: discard buffered DATA when scheduled reset pending
- send: return Pending instead of Ready(Ok(0)) when capacity exhausted
- streams: reject frames on idle streams per RFC 9113
- share: document poll_capacity always returns n > 0
- dispatch: add SenderDropGuard to prevent silent data loss on mid-body drop
- dispatch: fix missed write wakeup that could deadlock H1 dispatch
- h2/mod: fix H2 capacity reservation deadlock on multiplexed streams
- body/incoming: handle NO_ERROR in poll_trailers for early responses
- decode: fix 32-bit overflow in large body size calculations
- redirect: add scheme check to remove_sensitive_headers (security fix,
  prevents credential leakage on https->http same-host:port redirects)
- response: include URL context in JSON decode error messages
- dns/hickory: use get_or_try_init to propagate DNS init errors instead
  of panicking; fall back to Google DNS when system config unavailable
- Replace custom poll_fn polyfill with std::future::poll_fn
- Replace futures_core::ready with std::task::ready
- Delete common/future.rs and its module declaration
- Remove futures-core dependency, update system-configuration to >=0.7
- Move domain_as_uri inside closure to fix use-after-move in connect_to
- Add RPITIT precise capturing bounds (use<C, B>)
- Replace futures_util::pin_mut with std::pin::pin!
- Bump hyper 1.8->1.9, tighten socket2 range to 0.6
- Move tokio/net feature from client to client-legacy
- Add tokio/sync to client-pool feature
@deedy5
deedy5 merged commit 4e1680a into main May 23, 2026
38 of 39 checks passed
@deedy5
deedy5 deleted the dev branch May 23, 2026 11:43
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