From 9ff22ac7e04b40b5cfdd7920d798e9c953c1d2c8 Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Wed, 9 Feb 2022 23:21:17 +0330 Subject: [PATCH] LibHTTP: Skip the body when response code is 204 ...even if the headers claim that there's some data in the form of Content-Length. This finally fixes loading Discord with RequestServer ConnectionCache on :^) --- 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 8ac31ee412..52004cda26 100644 --- a/Userland/Libraries/LibHTTP/Job.cpp +++ b/Userland/Libraries/LibHTTP/Job.cpp @@ -310,6 +310,11 @@ void Job::on_socket_connected() if (result.value() == 0 && !m_headers.get("Transfer-Encoding"sv).value_or(""sv).view().trim_whitespace().equals_ignoring_case("chunked"sv)) return finish_up(); } + // There's also the possibility that the server responds with 204 (No Content), + // and manages to set a Content-Length anyway, in such cases ignore Content-Length and quit early; + // As the HTTP spec explicitly prohibits presence of Content-Length when the response code is 204. + if (m_code == 204) + return finish_up(); can_read_line = m_socket->can_read_line(); if (can_read_line.is_error())