aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorhref <href@random.sh>2019-01-21 15:17:24 +0100
committerhref <href@random.sh>2019-01-21 15:17:24 +0100
commit99763999c19bfb2a5d8a10af98ff3c54d2c929ce (patch)
tree34859f1f03a513ec8e84ff47b9a87ddd0ae65632 /lib
parent8cd853ce0c2d67614dc2e0b07b4cf855a2a381d2 (diff)
downloadpleroma-99763999c19bfb2a5d8a10af98ff3c54d2c929ce.tar.gz
reverse_proxy - always override plug's cache-control
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/reverse_proxy.ex23
1 files changed, 18 insertions, 5 deletions
diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex
index a3846c3bb..a25b5ea4e 100644
--- a/lib/pleroma/reverse_proxy.ex
+++ b/lib/pleroma/reverse_proxy.ex
@@ -275,11 +275,24 @@ defmodule Pleroma.ReverseProxy do
defp build_resp_cache_headers(headers, _opts) do
has_cache? = Enum.any?(headers, fn {k, _} -> k in @resp_cache_headers end)
-
- if has_cache? do
- headers
- else
- List.keystore(headers, "cache-control", 0, {"cache-control", @default_cache_control_header})
+ has_cache_control? = List.keymember?(headers, "cache-control", 0)
+
+ cond do
+ has_cache? && has_cache_control? ->
+ headers
+
+ has_cache? ->
+ # There's caching header present but no cache-control -- we need to explicitely override it to public
+ # as Plug defaults to "max-age=0, private, must-revalidate"
+ List.keystore(headers, "cache-control", 0, {"cache-control", "public"})
+
+ true ->
+ List.keystore(
+ headers,
+ "cache-control",
+ 0,
+ {"cache-control", @default_cache_control_header}
+ )
end
end