From 241d18273a5d534c5afe1c34f10f27910df99c51 Mon Sep 17 00:00:00 2001 From: Niklas Korz Date: Sun, 16 Feb 2025 14:54:25 +0100 Subject: [PATCH] fix(proxy): chunked encoding mustn't set content-length header --- lib/web/proxy/reverse_proxy.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/web/proxy/reverse_proxy.ex b/lib/web/proxy/reverse_proxy.ex index 8a78ef277..788ccc306 100644 --- a/lib/web/proxy/reverse_proxy.ex +++ b/lib/web/proxy/reverse_proxy.ex @@ -187,9 +187,13 @@ defmodule Mobilizon.Web.ReverseProxy do @spec response(Plug.Conn.t(), any(), String.t(), pos_integer(), list(tuple()), Keyword.t()) :: Plug.Conn.t() defp response(conn, client, url, status, headers, opts) do + headers = build_resp_headers(headers, opts) + # Fix HTTP/1.1 protocol violation: content-length can't be combined with chunked encoding + headers = Enum.reject(headers, fn {k, _} -> k == "content-length" end) + result = conn - |> put_resp_headers(build_resp_headers(headers, opts)) + |> put_resp_headers(headers) |> send_chunked(status) |> chunk_reply(client, opts)