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