diff options
author | Matthew Gumport <[email protected]> | 2024-12-13 15:07:12 -0800 |
---|---|---|
committer | Matthew Gumport <[email protected]> | 2024-12-13 15:07:12 -0800 |
commit | a5c03fa60ac0a5b814ea9082474dd17667a4571b (patch) | |
tree | 5130d44671578701f3d1c66f95804aface7e236d /pingora-proxy/src/proxy_trait.rs | |
parent | c429adaad6564e544659dedf316ee0d94e8a98c6 (diff) | |
download | pingora-bleeper-yuchen-9df2f3f6e6b919a632b08af4584a1c1a3bcee0fd.tar.gz pingora-bleeper-yuchen-9df2f3f6e6b919a632b08af4584a1c1a3bcee0fd.zip |
add range_header_filter to proxy traitbleeper-yuchen-9df2f3f6e6b919a632b08af4584a1c1a3bcee0fd
This makes the `range_header_filter` overridable. The new default implementation
is what we were doing instead of calling a hook.
Diffstat (limited to 'pingora-proxy/src/proxy_trait.rs')
-rw-r--r-- | pingora-proxy/src/proxy_trait.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/pingora-proxy/src/proxy_trait.rs b/pingora-proxy/src/proxy_trait.rs index 00e54f4..e67a9f0 100644 --- a/pingora-proxy/src/proxy_trait.rs +++ b/pingora-proxy/src/proxy_trait.rs @@ -18,6 +18,7 @@ use pingora_cache::{ CacheKey, CacheMeta, ForcedInvalidationKind, RespCacheable::{self, *}, }; +use proxy_cache::range_filter::{self}; use std::time::Duration; /// The interface to control the HTTP proxy @@ -216,6 +217,23 @@ pub trait ProxyHttp { ) } + /// This filter is called when cache is enabled to determine what byte range to return (in both + /// cache hit and miss cases) from the response body. It is only used when caching is enabled, + /// otherwise the upstream is responsible for any filtering. It allows users to define the range + /// this request is for via its return type `range_filter::RangeType`. + /// + /// It also allow users to modify the response header accordingly. + /// + /// The default implementation can handle a single-range as per [RFC7232]. + fn range_header_filter( + &self, + req: &RequestHeader, + resp: &mut ResponseHeader, + _ctx: &mut Self::CTX, + ) -> range_filter::RangeType { + proxy_cache::range_filter::range_header_filter(req, resp) + } + /// Modify the request before it is sent to the upstream /// /// Unlike [Self::request_filter()], this filter allows to change the request headers to send |