github cloudflare/pingora 0.7.0
Pingora 0.7.0

9 hours ago

0.7.0 - 2026-01-30

Highlights

  • Extensible SslDigest to save user-defined TLS context
  • Add ConnectionFilter trait for early TCP connection filtering

🚀 Features

  • Add ConnectionFilter trait for early TCP connection filtering
  • Introduce a virtual L4 stream abstraction
  • Add support for verify_cert and verify_hostname using rustls
  • Exposes the HttpProxy struct to allow external crates to customize the proxy logic.
  • Exposes a new_mtls method for creating a HttpProxy with a client_cert_key to enable mtls peers.
  • Add SSLKEYLOGFILE support to rustls connector
  • Allow spawning background subrequests from main session
  • Allow Extensions in cache LockCore and user tracing
  • Add body-bytes tracking across H1/H2 and proxy metrics
  • Allow setting max_weight on MissFinishType::Appended
  • Allow adding SslDigestExtensions on downstream and upstream
  • Add Custom session support for encapsulated HTTP

🐛 Bug Fixes

  • Use write timeout consistently for h2 body writes
  • Prevent downstream error prior to header from canceling cache fill
  • Fix debug log and new tests
  • Fix size calculation for buffer capacity
  • Fix cache admission on header only misses
  • Fix duplicate zero-size chunk on cache hit
  • Fix chunked trailer end parsing
  • Lock age timeouts cause lock reacquisition
  • Fix transfer fd compile error for non linux os

Sec

  • Removed atty
  • Upgrade lru to >= 0.16.3 crate version because of RUSTSEC-2026-0002

Everything Else

  • Add tracing to log reason for not caching an asset on cache put
  • Evict when asset count exceeds optional watermark
  • Remove trailing comma from Display for HttpPeer
  • Make ProxyHTTP::upstream_response_body_filter return an optional duration for rate limiting
  • Restore daemonize STDOUT/STDERR when error log file is not specified
  • Log task info when upstream header failed to send
  • Check cache enablement to determine cache fill
  • Update meta when revalidating before lock release
  • Add ForceFresh status to cache hit filter
  • Pass stale status to cache lock
  • Bump max multipart ranges to 200
  • Downgrade Expires header warn to debug log
  • CI and effective msrv bump to 1.83
  • Add default noop custom param to client Session
  • Use static str in ErrorSource or ErrorType as_str
  • Use bstr for formatting byte strings
  • Tweak the implementation of and documentation of connection_filter feature
  • Set h1.1 when proxying cacheable responses
  • Add or remove accept-ranges on range header filter
  • Update msrv in github ci, fixup .bleep
  • Override request keepalive on process shutdown
  • Add shutdown flag to proxy session
  • Add ResponseHeader in pingora_http crate's prelude
  • Add a configurable upgrade for pingora-ketama that reduces runtime cpu and memory
  • Add to cache api spans
  • Increase visibility of multirange items
  • Use seek_multipart on body readers
  • Log read error when reading trailers end
  • Re-add the warning about cache-api volatility
  • Default to close on downstream response before body finish
  • Ensure idle_timeout is polled even if idle_timeout is unset so notify events are registered for h2 idle pool, filter out closed connections when retrieving from h2 in use pool.
  • Add simple read test for invalid extra char in header end
  • Allow customizing lock status on Custom NoCacheReasons
  • Close h1 conn by default if req header unfinished
  • Add configurable retries for upgrade sock connect/accept
  • Deflake test by increasing write size
  • Make the version restrictions on rmp and rmp-serde more strict to prevent forcing consumers to use 2024 edition
  • Rewind preread bytes when parsing next H1 response
  • Add epoch and epoch_override to CacheMeta

Don't miss a new pingora release

NewReleases is sending notifications on new releases.