Przeglądaj źródła

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 :^)
Ali Mohammad Pur 3 lat temu
rodzic
commit
9ff22ac7e0
1 zmienionych plików z 5 dodań i 0 usunięć
  1. 5 0
      Userland/Libraries/LibHTTP/Job.cpp

+ 5 - 0
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())