v0.35.1: performance, AGPL licensing and documentation overhaul
- Web Server reads static files inline; proxy middleware chain flattened - About window with license summary and project links; AGPL-3.0-or-later - Rewritten documentation: feature list, screenshots, performance guide - Fix false spikes in per-Vhost request-rate charts
This commit is contained in:
1 parent
d3b492874b
commit
eba9f89283
135 files changed
+1425
-1064
No files matched your search
@@ -137,8 +137,8 @@ let origin_reason = (cache_ticket.is_some() && origin_plan.is_none()).then(|| {
|
||||
let origin_no_transform = crate::transform::no_transform(response.headers());
|
||||
let skip_compression = crate::compression::no_transform(response.headers());
|
||||
let origin_validators = crate::transform::OriginValidators {
|
||||
etag: response.headers().get("etag").cloned(),
|
||||
last_modified: response.headers().get("last-modified").cloned(),
|
||||
etag: response.headers().get(::http::header::ETAG).cloned(),
|
||||
last_modified: response.headers().get(::http::header::LAST_MODIFIED).cloned(),
|
||||
};
|
||||
let (mut parts, body) = response.into_parts();
|
||||
parts.extensions.insert(origin_validators);
|
||||
@@ -147,8 +147,8 @@ if skip_compression || range_requested {
|
||||
}
|
||||
headers::strip_hop_by_hop(&mut parts.headers);
|
||||
if websocket_legacy_support && handshake.is_some() {
|
||||
parts.headers.remove("content-length");
|
||||
parts.headers.remove("transfer-encoding");
|
||||
parts.headers.remove(::http::header::CONTENT_LENGTH);
|
||||
parts.headers.remove(::http::header::TRANSFER_ENCODING);
|
||||
}
|
||||
apply_response_rules(
|
||||
&mut parts.headers,
|
||||
@@ -161,7 +161,7 @@ if let Some(pool) = &route.pool {
|
||||
pool.strip_affinity_response(&mut parts.headers);
|
||||
}
|
||||
if let Some(cookie) = active_affinity_cookie {
|
||||
parts.headers.append("set-cookie", cookie);
|
||||
parts.headers.append(::http::header::SET_COOKIE, cookie);
|
||||
}
|
||||
let h3_tunnel = handshake.as_ref().is_some_and(|handshake| handshake.h3())
|
||||
&& upgraded.is_some();
|
||||
@@ -208,9 +208,9 @@ let mut response = if h3_tunnel {
|
||||
};
|
||||
exchange.websocket_phase("tunnel_ready");
|
||||
parts.status = StatusCode::OK;
|
||||
parts.headers.remove("sec-websocket-accept");
|
||||
parts.headers.remove("content-length");
|
||||
parts.headers.remove("transfer-encoding");
|
||||
parts.headers.remove(::http::header::SEC_WEBSOCKET_ACCEPT);
|
||||
parts.headers.remove(::http::header::CONTENT_LENGTH);
|
||||
parts.headers.remove(::http::header::TRANSFER_ENCODING);
|
||||
parts.extensions.insert(crate::compression::Skip);
|
||||
parts
|
||||
.extensions
|
||||
@@ -301,8 +301,8 @@ let mut response = if h3_tunnel {
|
||||
"RustProxy: HTTP/2 WebSocket tunnel state unavailable\n",
|
||||
);
|
||||
};
|
||||
parts.headers.remove("content-length");
|
||||
parts.headers.remove("transfer-encoding");
|
||||
parts.headers.remove(::http::header::CONTENT_LENGTH);
|
||||
parts.headers.remove(::http::header::TRANSFER_ENCODING);
|
||||
parts.extensions.insert(crate::compression::Skip);
|
||||
Response::from_parts(
|
||||
parts,
|
||||
@@ -314,10 +314,10 @@ let mut response = if h3_tunnel {
|
||||
{
|
||||
parts
|
||||
.headers
|
||||
.insert("connection", HeaderValue::from_static("Upgrade"));
|
||||
.insert(::http::header::CONNECTION, HeaderValue::from_static("Upgrade"));
|
||||
parts
|
||||
.headers
|
||||
.insert("upgrade", HeaderValue::from_static("websocket"));
|
||||
.insert(::http::header::UPGRADE, HeaderValue::from_static("websocket"));
|
||||
websocket::spawn(
|
||||
state.clone(),
|
||||
downstream,
|
||||
@@ -342,8 +342,7 @@ if intercept_origin_error {
|
||||
Some(route),
|
||||
admin_control_plane,
|
||||
);
|
||||
response.headers_mut().insert(
|
||||
"cache-control",
|
||||
response.headers_mut().insert(::http::header::CACHE_CONTROL,
|
||||
HeaderValue::from_static("no-store"),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user