fix: call after_handlers for legitimate requests without body part

This commit is contained in:
June Han 2024-02-21 14:55:47 +09:00 committed by gittiver
parent 1e864a2f32
commit 5ecd04ade2
2 changed files with 19 additions and 4 deletions

View File

@ -103,6 +103,7 @@ namespace crow
if (!routing_handle_result_->rule_index)
{
parser_.done();
need_to_call_after_handlers_ = true;
complete_request();
}
}

View File

@ -1869,7 +1869,8 @@ TEST_CASE("middleware_cors")
return "-";
});
auto _ = app.bindaddr(LOCALHOST_ADDRESS).port(45451).run_async();
const auto port = 33333;
auto _ = app.bindaddr(LOCALHOST_ADDRESS).port(port).run_async();
app.wait_for_server_start();
asio::io_service is;
@ -1877,7 +1878,20 @@ TEST_CASE("middleware_cors")
{
asio::ip::tcp::socket c(is);
c.connect(asio::ip::tcp::endpoint(
asio::ip::address::from_string(LOCALHOST_ADDRESS), 45451));
asio::ip::address::from_string(LOCALHOST_ADDRESS), port));
c.send(asio::buffer("OPTIONS / HTTP/1.1\r\n\r\n"));
c.receive(asio::buffer(buf, 2048));
c.close();
CHECK(std::string(buf).find("Access-Control-Allow-Origin: *") != std::string::npos);
}
{
asio::ip::tcp::socket c(is);
c.connect(asio::ip::tcp::endpoint(
asio::ip::address::from_string(LOCALHOST_ADDRESS), port));
c.send(asio::buffer("GET /\r\n\r\n"));
@ -1890,7 +1904,7 @@ TEST_CASE("middleware_cors")
{
asio::ip::tcp::socket c(is);
c.connect(asio::ip::tcp::endpoint(
asio::ip::address::from_string(LOCALHOST_ADDRESS), 45451));
asio::ip::address::from_string(LOCALHOST_ADDRESS), port));
c.send(asio::buffer("GET /origin\r\n\r\n"));
@ -1903,7 +1917,7 @@ TEST_CASE("middleware_cors")
{
asio::ip::tcp::socket c(is);
c.connect(asio::ip::tcp::endpoint(
asio::ip::address::from_string(LOCALHOST_ADDRESS), 45451));
asio::ip::address::from_string(LOCALHOST_ADDRESS), port));
c.send(asio::buffer("GET /nocors/path\r\n\r\n"));