v0.34.0_12

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-18 10:38:06 +02:00
1 parent 9f20d5195e
commit 929854898f
16 files changed
+186 -285

No files matched your search

-16
View File
@@ -282,22 +282,6 @@ fn finish_headers(
crate::http3::advertise(response.headers_mut(), local, tls, active);
}
}
fn attach_origin_diagnostics(
response: &mut Response,
frontend: Option<&crate::config::CompiledFrontend>,
elapsed: Duration,
backend_id: &str,
) {
if let Some(frontend) = frontend {
if frontend.timing_headers || frontend.backend_timing_header {
response.extensions_mut().insert(OriginTiming(elapsed));
}
if frontend.backend_header {
response.extensions_mut().insert(OriginBackend(backend_id.to_owned()));
}
}
}
fn apply_timing_headers(
response: &mut Response,
frontend: Option<&crate::config::CompiledFrontend>,
+4 -1
View File
@@ -179,7 +179,10 @@ let serve_stale = |reason: &'static str, elapsed: Duration, origin_backend: &str
hit.resident_age_seconds,
);
hit.response.extensions_mut().insert(ResponseRulesApplied);
attach_origin_diagnostics(&mut hit.response, route.frontend.as_deref(), elapsed, origin_backend);
hit.response.extensions_mut().insert(OriginTiming(elapsed));
hit.response
.extensions_mut()
.insert(OriginBackend(origin_backend.to_owned()));
state.cache.record(scope, &host, "HIT", reason);
if let Some(exchange) = &exchange {
exchange.cache_status.store(1, Ordering::Relaxed);
+6 -2
View File
@@ -73,8 +73,12 @@ if response.status() == StatusCode::NOT_MODIFIED && revalidation_sent {
revalidated = crate::cache::make_not_modified(revalidated);
}
revalidated.extensions_mut().insert(ResponseRulesApplied);
attach_origin_diagnostics(&mut revalidated, route.frontend.as_deref(),
upstream_started.elapsed(), &active_backend.id);
revalidated
.extensions_mut()
.insert(OriginTiming(upstream_started.elapsed()));
revalidated
.extensions_mut()
.insert(OriginBackend(active_backend.id.clone()));
if let Some(exchange) = &exchange {
exchange.cache_status.store(1, Ordering::Relaxed);
*exchange
+6 -2
View File
@@ -366,8 +366,12 @@ if intercept_origin_error {
);
}
response.extensions_mut().insert(ResponseRulesApplied);
attach_origin_diagnostics(&mut response, route.frontend.as_deref(),
upstream_started.elapsed(), &active_backend.id);
response
.extensions_mut()
.insert(OriginTiming(upstream_started.elapsed()));
response
.extensions_mut()
.insert(OriginBackend(active_backend.id.clone()));
if !range_requested && handshake.is_none() {
if let Some(settings) = transform_settings.filter(|settings| settings.enabled) {
let transform_started = Instant::now();
-28
View File
@@ -409,34 +409,6 @@ mod authority_tests {
assert!(std::str::from_utf8(detail.as_bytes()).is_ok());
}
#[test]
fn origin_diagnostics_are_created_only_for_enabled_frontend_features() {
let mut response = Response::new(Body::empty());
attach_origin_diagnostics(&mut response, None, Duration::from_millis(5), "origin-a");
assert!(response.extensions().get::<OriginTiming>().is_none());
assert!(response.extensions().get::<OriginBackend>().is_none());
for (timing, backend, backend_timing) in [
(false, false, false),
(true, false, false),
(false, true, false),
(false, false, true),
(true, true, true),
] {
let mut config = crate::config::demo_config("127.0.0.1:9000".parse().unwrap());
config.vhosts[0].timing_headers = timing;
config.vhosts[0].backend_header = backend;
config.vhosts[0].backend_timing_header = backend_timing;
let snapshot = crate::config::compile(config, 1, &validation_policy()).unwrap();
let route = snapshot.select("localhost", "/").unwrap();
let mut response = Response::new(Body::empty());
attach_origin_diagnostics(&mut response, route.frontend.as_deref(),
Duration::from_millis(5), "origin-a");
assert_eq!(response.extensions().get::<OriginTiming>().is_some(),
timing || backend_timing);
assert_eq!(response.extensions().get::<OriginBackend>().is_some(), backend);
}
}
#[test]
fn backend_diagnostics_are_opt_in_and_strip_spoofed_values() {
let mut response = Response::new(Body::empty());