fix: missing base modules when `page-fallback` is enabled
following modules are now used if `page-fallback` is activated:
- cors
- compression
- cache_control_headers
- security_headers
- custom_headers
Diff
src/handler.rs | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 58 insertions(+), 1 deletion(-)
@@ -293,7 +293,64 @@ impl RequestHandler {
&& status == StatusCode::NOT_FOUND
&& !self.opts.page_fallback.is_empty()
{
return Ok(fallback_page::fallback_response(&self.opts.page_fallback));
let mut resp = fallback_page::fallback_response(&self.opts.page_fallback);
if let Some(cors_headers) = cors_headers {
if !cors_headers.is_empty() {
for (k, v) in cors_headers.iter() {
resp.headers_mut().insert(k, v.to_owned());
}
resp.headers_mut().remove(http::header::ALLOW);
}
}
#[cfg(feature = "compression")]
if self.opts.compression || compression_static {
resp.headers_mut().append(
hyper::header::VARY,
hyper::header::HeaderValue::from_name(
hyper::header::ACCEPT_ENCODING,
),
);
}
#[cfg(feature = "compression")]
if self.opts.compression {
resp = match compression::auto(method, headers, resp) {
Ok(res) => res,
Err(err) => {
tracing::error!("error during body compression: {:?}", err);
return error_page::error_response(
uri,
method,
&StatusCode::INTERNAL_SERVER_ERROR,
&self.opts.page404,
&self.opts.page50x,
);
}
};
}
if self.opts.cache_control_headers {
control_headers::append_headers(uri_path, &mut resp);
}
if self.opts.security_headers {
security_headers::append_headers(&mut resp);
}
if let Some(advanced) = &self.opts.advanced_opts {
custom_headers::append_headers(uri_path, &advanced.headers, &mut resp)
}
return Ok(resp);
}