0.3.0
cloudflare/pingora0.3.0Jul 12, 2024by eaufavor
AI Summary
Feature release introducing HTTP modules system, request body filtering, and H2c support along with various TCP optimizations including fast open, keep-alive, and TCP_INFO.
Key Highlights
- HTTP modules support for 3rd party modules
- request_body_filter for body inspection and modification
- H2c support
- TCP fast open support
- Server-side TCP keep-alive
- TCP_INFO and DSCP support
- Compression level configuration per algorithm
Breaking Changes
- UDS parsing now requires the `unix:` prefix - support for path without prefix is deprecated
New Features
- Add support for HTTP modules (3rd party imports)
- Add request_body_filter for body inspection/modification
- Add H2c support
- Add TCP fast open support
- Add server side TCP keep-alive support
- Add support to get TCP_INFO
- Add support to set DSCP
- Add or_err()/or_err_with API to convert Options to pingora::Error
- Add or_fail() API to convert impl std::error::Error to pingora::Error
- Add API to track socket read and write pending time
- Compression: allow setting level per algorithm
Full Release Notes
## [0.3.0](https://github.com/cloudflare/pingora/compare/0.2.0...0.3.0) - 2024-07-12 ### 🚀 Features - Add support for HTTP modules. This feature allows users to import modules written by 3rd parties. - Add `request_body_filter`. Now request body can be inspected and modified. - Add H2c support. - Add TCP fast open support. - Add support for server side TCP keep-alive. - Add support to get TCP_INFO. - Add support to set DSCP. - Add `or_err()`/`or_err_with` API to convert `Options` to `pingora::Error`. - Add `or_fail()` API to convert `impl std::error::Error` to `pingora::Error`. - Add the API to track socket read and write pending time. - Compression: allow setting level per algorithm. ### 🐛 Bug Fixes - Fixed a panic when using multiple H2 streams in the same H2 connection to upstreams. - Pingora now respects the `Connection` header it sends to upstream. - Accept-Ranges header is now removed when response is compressed. - Fix ipv6_only socket flag. - A new H2 connection is opened now if the existing connection returns GOAWAY with graceful shutdown error. - Fix a FD mismatch error when 0.0.0.0 is used as the upstream IP ### ⚙️ Changes and Miscellaneous Tasks - Dependency: replace `structopt` with `clap` - Rework the API of HTTP modules - Optimize remove_header() API call - UDS parsing now requires the path to have `unix:` prefix. The support for the path without prefix is deprecated and will be removed on the next release. - Other minor API changes