aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEdward Wang <[email protected]>2024-06-19 13:48:59 -0700
committerEdward Wang <[email protected]>2024-06-28 12:34:25 -0700
commit03bd29044e8367b9e44ac7b31e0c7aa152cf6b60 (patch)
treea985e8cfa1dcb5ec2d0b643bb796d40729b6c9d0
parentfbf3a9574930077ed01f955e9e8df2ec74a51215 (diff)
downloadpingora-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--.bleep2
-rw-r--r--pingora-core/src/connectors/http/v1.rs3
-rw-r--r--pingora-proxy/src/proxy_h1.rs5
3 files changed, 4 insertions, 6 deletions
diff --git a/.bleep b/.bleep
index dd860b4..990b361 100644
--- a/.bleep
+++ b/.bleep
@@ -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)),
}
}