No content check (#823)

* No content check

* unit test for no content

* fixing merge conflict break

* oops during manual merge conflict
This commit is contained in:
Eric Lee 2021-01-13 15:51:40 -07:00 committed by GitHub
parent 85b4abbf16
commit 8d9a477edb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 1 deletions

View file

@ -5544,7 +5544,7 @@ inline bool ClientImpl::process_request(Stream &strm, const Request &req,
}
// Body
if (req.method != "HEAD" && req.method != "CONNECT") {
if ((res.status != 204) && req.method != "HEAD" && req.method != "CONNECT") {
auto out =
req.content_receiver_
? static_cast<ContentReceiverWithProgress>(

View file

@ -953,6 +953,31 @@ TEST(ErrorHandlerTest, ContentLength) {
ASSERT_FALSE(svr.is_running());
}
TEST(NoContentTest, ContentLength) {
Server svr;
svr.Get("/hi", [](const Request & /*req*/, Response &res) {
res.status = 204;
});
auto thread = std::thread([&]() { svr.listen(HOST, PORT); });
// Give GET time to get a few messages.
std::this_thread::sleep_for(std::chrono::seconds(1));
{
Client cli(HOST, PORT);
auto res = cli.Get("/hi");
ASSERT_TRUE(res);
EXPECT_EQ(204, res->status);
EXPECT_EQ("0", res->get_header_value("Content-Length"));
}
svr.stop();
thread.join();
ASSERT_FALSE(svr.is_running());
}
TEST(RoutingHandlerTest, PreRoutingHandler) {
Server svr;