From 78bebb363b7a284be6f306a83072080e78c36d85 Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Sat, 16 Oct 2021 20:17:29 +0200 Subject: [PATCH] LibHTTP: Reset m_content_length if there's a Transfer-Encoding header --- Userland/Libraries/LibHTTP/Job.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Userland/Libraries/LibHTTP/Job.cpp b/Userland/Libraries/LibHTTP/Job.cpp index c690bd067d..8043254861 100644 --- a/Userland/Libraries/LibHTTP/Job.cpp +++ b/Userland/Libraries/LibHTTP/Job.cpp @@ -288,6 +288,11 @@ void Job::on_socket_connected() } else { auto transfer_encoding = m_headers.get("Transfer-Encoding"); if (transfer_encoding.has_value()) { + // HTTP/1.1 3.3.3.3: + // If a message is received with both a Transfer-Encoding and a Content-Length header field, the Transfer-Encoding overrides the Content-Length. [...] + // https://httpwg.org/specs/rfc7230.html#message.body.length + m_content_length = {}; + // Note: Some servers add extra spaces around 'chunked', see #6302. auto encoding = transfer_encoding.value().trim_whitespace();