Parse correctly content-type & do not forward content-length
authorhref <href@random.sh>
Fri, 23 Nov 2018 17:57:27 +0000 (18:57 +0100)
committerhref <href@random.sh>
Fri, 30 Nov 2018 17:00:57 +0000 (18:00 +0100)
lib/pleroma/reverse_proxy.ex

index 64c3c3a19407e4fbf6391af2a5a6a7b85d74ca6c..c8b14a89d5f93825330292b97a8ab8daf4cae532 100644 (file)
@@ -2,7 +2,7 @@ defmodule Pleroma.ReverseProxy do
   @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since if-none-match range)
   @resp_cache_headers ~w(etag date last-modified cache-control)
   @keep_resp_headers @resp_cache_headers ++
-                       ~w(content-type content-disposition content-length accept-ranges vary)
+                       ~w(content-type content-disposition accept-ranges vary)
   @default_cache_control_header "public, max-age=1209600"
   @valid_resp_codes [200, 206, 304]
   @max_read_duration :timer.minutes(2)
@@ -225,6 +225,12 @@ defmodule Pleroma.ReverseProxy do
     end)
   end
 
+  defp get_content_type(headers) do
+    {_, content_type} = List.keyfind(headers, "content-type", 0, {"content-type", "application/octet-stream"})
+    [content_type | _] =  String.split(content_type, ";")
+    content_type
+  end
+
   defp put_resp_headers(conn, headers) do
     Enum.reduce(headers, conn, fn {k, v}, conn ->
       put_resp_header(conn, k, v)
@@ -274,8 +280,7 @@ defmodule Pleroma.ReverseProxy do
   defp build_resp_content_disposition_header(headers, opts) do
     opt = Keyword.get(opts, :inline_content_types, @inline_content_types)
 
-    {_, content_type} =
-      List.keyfind(headers, "content-type", 0, {"content-type", "application/octect-stream"})
+    content_type = get_content_type(headers)
 
     attachment? =
       cond do