From b5451e0f4df0491b50d24932c585b0771a595a1f Mon Sep 17 00:00:00 2001 From: Denis Cornehl Date: Thu, 29 Sep 2022 19:52:44 +0200 Subject: [PATCH] omit cache-control header when it would be empty --- src/test/mod.rs | 17 +++++++++++------ src/web/cache.rs | 5 ++++- src/web/rustdoc.rs | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/test/mod.rs b/src/test/mod.rs index 6d0caaf23..395af6998 100644 --- a/src/test/mod.rs +++ b/src/test/mod.rs @@ -61,12 +61,17 @@ pub(crate) fn assert_cache_control( config: &Config, ) { assert!(config.cache_control_stale_while_revalidate.is_some()); - assert_eq!( - res.headers() - .get("Cache-Control") - .expect("missing cache-control header"), - &CacheControl(cache_policy.render(config)).to_string() - ); + let cache_control = res.headers().get("Cache-Control"); + + let expected_directives = cache_policy.render(config); + if expected_directives.is_empty() { + assert!(cache_control.is_none()); + } else { + assert_eq!( + cache_control.expect("missing cache-control header"), + &CacheControl(expected_directives).to_string() + ); + } } /// Make sure that a URL returns a status code between 200-299 diff --git a/src/web/cache.rs b/src/web/cache.rs index 28183dc34..c01bfbae0 100644 --- a/src/web/cache.rs +++ b/src/web/cache.rs @@ -104,7 +104,10 @@ impl AfterMiddleware for CacheMiddleware { ); } - res.headers.set(CacheControl(cache.render(config))); + let directives = cache.render(config); + if !directives.is_empty() { + res.headers.set(CacheControl(directives)) + } Ok(res) } } diff --git a/src/web/rustdoc.rs b/src/web/rustdoc.rs index 16364cdf2..70396d682 100644 --- a/src/web/rustdoc.rs +++ b/src/web/rustdoc.rs @@ -1769,7 +1769,7 @@ mod test { let url = format!("http://{}/dummy", web.server_addr()); let resp = client.get(url).send()?; assert_eq!(resp.status(), StatusCode::FOUND); - assert!(resp.headers().get("Cache-Control").unwrap().is_empty()); + assert!(resp.headers().get("Cache-Control").is_none()); assert!(resp .headers() .get("Location")