fix: keep HTTP response alive during async_write
This commit is contained in:
parent
68c09700ff
commit
7f114ed92b
|
|
@ -66,7 +66,7 @@ install(FILES LICENSE DESTINATION /usr/share/doc/cards)
|
|||
|
||||
# ─── Packaging (CPack) ────────────────────────────────────────────────
|
||||
set(CPACK_PACKAGE_NAME "cards")
|
||||
set(CPACK_PACKAGE_VERSION "1.0.1")
|
||||
set(CPACK_PACKAGE_VERSION "1.0.4")
|
||||
set(CPACK_PACKAGE_VENDOR "cards")
|
||||
set(CPACK_PACKAGE_MAINTAINER "adwet")
|
||||
set(CPACK_PACKAGE_CONTACT "adwet@yandex.ru")
|
||||
|
|
|
|||
|
|
@ -111,16 +111,18 @@ void HttpSession::processRequest(http::request<http::string_body>&& request) {
|
|||
});
|
||||
}
|
||||
|
||||
void HttpSession::writeResponse(http::response<http::string_body>&& res) {
|
||||
void HttpSession::writeResponse(http::response<http::string_body> res) {
|
||||
auto self = shared_from_this();
|
||||
auto response = std::make_shared<http::response<http::string_body>>(std::move(res));
|
||||
http::async_write(
|
||||
stream,
|
||||
res,
|
||||
[self](beast::error_code ec, std::size_t) {
|
||||
*response,
|
||||
[self, response](beast::error_code ec, std::size_t) {
|
||||
if (ec) {
|
||||
self->handleError(ec, "write");
|
||||
}
|
||||
self->stream.socket().shutdown(net::ip::tcp::socket::shutdown_send, ec);
|
||||
beast::error_code ignored;
|
||||
self->stream.socket().shutdown(net::ip::tcp::socket::shutdown_send, ignored);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ private:
|
|||
void readRequest();
|
||||
void onRead(beast::error_code ec, std::size_t bytes_transferred);
|
||||
void processRequest(http::request<http::string_body>&& req);
|
||||
void writeResponse(http::response<http::string_body>&& res);
|
||||
void writeResponse(http::response<http::string_body> res);
|
||||
void handleError(beast::error_code ec, const char* what);
|
||||
|
||||
beast::tcp_stream stream;
|
||||
|
|
|
|||
Loading…
Reference in New Issue