diff options
author | Edward Wang <[email protected]> | 2024-06-19 13:48:59 -0700 |
---|---|---|
committer | Edward Wang <[email protected]> | 2024-06-28 12:34:25 -0700 |
commit | 03bd29044e8367b9e44ac7b31e0c7aa152cf6b60 (patch) | |
tree | a985e8cfa1dcb5ec2d0b643bb796d40729b6c9d0 | |
parent | fbf3a9574930077ed01f955e9e8df2ec74a51215 (diff) | |
download | pingora-03bd29044e8367b9e44ac7b31e0c7aa152cf6b60.tar.gz pingora-03bd29044e8367b9e44ac7b31e0c7aa152cf6b60.zip |
Always respect_keepalive when releasing http session
When a user calls `release_http_session` on an http Connector, it is
usually implied that they intend to reuse the underlying connection if
possible. Previously for H1 this involved reaching into the H1 client
Session and calling `respect_keepalive`. The new behavior always
respects keepalive as part of releasing the http session, as it was very
easy to overlook this step and unintentionally disable connection reuse
for H1 sessions.
-rw-r--r-- | .bleep | 2 | ||||
-rw-r--r-- | pingora-core/src/connectors/http/v1.rs | 3 | ||||
-rw-r--r-- | pingora-proxy/src/proxy_h1.rs | 5 |
3 files changed, 4 insertions, 6 deletions
@@ -1 +1 @@ -19506db280fe5f52641e5c1ffd48e4b62f536f18
\ No newline at end of file +b8ac54b482f643f04533dcc04061b1575482c92d
\ No newline at end of file diff --git a/pingora-core/src/connectors/http/v1.rs b/pingora-core/src/connectors/http/v1.rs index 7958a09..66f7bbb 100644 --- a/pingora-core/src/connectors/http/v1.rs +++ b/pingora-core/src/connectors/http/v1.rs @@ -51,10 +51,11 @@ impl Connector { pub async fn release_http_session<P: Peer + Send + Sync + 'static>( &self, - session: HttpSession, + mut session: HttpSession, peer: &P, idle_timeout: Option<Duration>, ) { + session.respect_keepalive(); if let Some(stream) = session.reuse().await { self.transport .release_stream(stream, peer.reuse_hash(), idle_timeout); diff --git a/pingora-proxy/src/proxy_h1.rs b/pingora-proxy/src/proxy_h1.rs index feac860..de49c03 100644 --- a/pingora-proxy/src/proxy_h1.rs +++ b/pingora-proxy/src/proxy_h1.rs @@ -98,10 +98,7 @@ impl<SV> HttpProxy<SV> { ); match ret { - Ok((_first, _second)) => { - client_session.respect_keepalive(); - (true, true, None) - } + Ok((_first, _second)) => (true, true, None), Err(e) => (false, false, Some(e)), } } |