v0.34.0_12
This commit is contained in:
1 parent
9f20d5195e
commit
929854898f
16 files changed
+186
-285
No files matched your search
@@ -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>,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in new issue
Block a user