Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f6bb30367 | |||
| ef9bac80ff |
@@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-03-17 - 25.11.22 - fix(rustproxy-http)
|
||||||
|
reuse healthy HTTP/2 upstream connections after requests with bodies
|
||||||
|
|
||||||
|
- Registers successful HTTP/2 connections in the pool regardless of whether the proxied request included a body
|
||||||
|
- Continues to avoid pooling upstream connections that returned 502 Bad Gateway responses
|
||||||
|
|
||||||
## 2026-03-17 - 25.11.21 - fix(rustproxy-http)
|
## 2026-03-17 - 25.11.21 - fix(rustproxy-http)
|
||||||
reuse pooled HTTP/2 connections for requests with and without bodies
|
reuse pooled HTTP/2 connections for requests with and without bodies
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@push.rocks/smartproxy",
|
"name": "@push.rocks/smartproxy",
|
||||||
"version": "25.11.21",
|
"version": "25.11.22",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.",
|
"description": "A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.",
|
||||||
"main": "dist_ts/index.js",
|
"main": "dist_ts/index.js",
|
||||||
|
|||||||
@@ -1038,12 +1038,9 @@ impl HttpProxyService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only pool the H2 connection if the request had no body.
|
|
||||||
// Requests with bodies (uploads) deplete connection-level flow control windows.
|
|
||||||
let request_had_body = !body.is_end_stream();
|
|
||||||
let sender_for_pool = sender.clone();
|
let sender_for_pool = sender.clone();
|
||||||
let result = self.forward_h2_with_sender(sender, parts, body, upstream_headers, upstream_path, route, route_id, source_ip, Some(pool_key), domain, conn_activity).await;
|
let result = self.forward_h2_with_sender(sender, parts, body, upstream_headers, upstream_path, route, route_id, source_ip, Some(pool_key), domain, conn_activity).await;
|
||||||
if !request_had_body && matches!(&result, Ok(ref resp) if resp.status() != StatusCode::BAD_GATEWAY) {
|
if matches!(&result, Ok(ref resp) if resp.status() != StatusCode::BAD_GATEWAY) {
|
||||||
let g = self.connection_pool.register_h2(pool_key.clone(), sender_for_pool);
|
let g = self.connection_pool.register_h2(pool_key.clone(), sender_for_pool);
|
||||||
gen_holder.store(g, std::sync::atomic::Ordering::Relaxed);
|
gen_holder.store(g, std::sync::atomic::Ordering::Relaxed);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartproxy',
|
name: '@push.rocks/smartproxy',
|
||||||
version: '25.11.21',
|
version: '25.11.22',
|
||||||
description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
|
description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user