v0.34.0_1

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-17 20:34:13 +02:00
1 parent 9b3d6731cc
commit 00f29f92c8
68 files changed
+2599 -513

No files matched your search

+14 -6
View File
@@ -23,6 +23,12 @@ fn should_replace_error_page(response: &Response, minimal_welcome: bool) -> bool
async fn observe(State(state): State<Arc<App>>, mut request: Request, next: Next) -> Response {
let snapshot = state.config.load_full();
let (frontend_context, route_context) = response_context(&snapshot, &request);
// The same snapshot is inserted into the request. No second host/regex
// selection or expensive full CompiledRoute clone is necessary in forward().
request.extensions_mut().insert(SelectedRouteContext {
frontend: frontend_context.clone(),
route: route_context.clone(),
});
let local = request.extensions().get::<LocalAddr>().map(|v| v.0);
let transport_tls = request
.extensions()
@@ -90,7 +96,7 @@ async fn observe(State(state): State<Arc<App>>, mut request: Request, next: Next
response.headers_mut(),
&snapshot,
frontend_context.as_deref(),
route_context.as_ref(),
route_context.as_deref(),
false,
);
finish_headers(
@@ -106,7 +112,7 @@ async fn observe(State(state): State<Arc<App>>, mut request: Request, next: Next
response.headers_mut(),
&snapshot,
frontend_context.as_deref(),
route_context.as_ref(),
route_context.as_deref(),
);
return response;
};
@@ -153,9 +159,9 @@ async fn observe(State(state): State<Arc<App>>, mut request: Request, next: Next
vhost_metrics: frontend_context.as_ref().map(|f| f.metrics.clone()),
vhost: frontend_context.as_ref().map(|f| f.id.clone()),
route: Mutex::new(None),
source: Mutex::new("unresolved"),
cache_effective_enabled: Mutex::new(None),
transform_effective_enabled: Mutex::new(None),
source: AtomicU8::new(ExchangeSource::Unresolved as u8),
cache_effective_enabled: AtomicU8::new(0),
transform_effective_enabled: AtomicU8::new(0),
backend: Mutex::new(None),
id,
request_id: request_id.clone(),
@@ -210,7 +216,9 @@ async fn observe(State(state): State<Arc<App>>, mut request: Request, next: Next
.extensions()
.get::<FinalRouteContext>()
.map(|context| context.0.clone());
let effective_route_context = final_route_context.as_ref().or(route_context.as_ref());
let effective_route_context = final_route_context
.as_deref()
.or_else(|| route_context.as_deref());
let minimal_welcome = response
.extensions()
.get::<crate::pages::MinimalWelcome>()