Fixes #155: added max streambuf config items to limit large requests/responses if needed
This commit is contained in:
parent
ec98ebc387
commit
69f945f686
5 changed files with 116 additions and 57 deletions
|
|
@ -76,13 +76,17 @@ namespace SimpleWeb {
|
|||
if(!lock)
|
||||
return;
|
||||
if(!ec) {
|
||||
std::shared_ptr<Response> response(new Response());
|
||||
std::shared_ptr<Response> response(new Response(this->config.max_response_streambuf_size));
|
||||
session->connection->set_timeout(this->config.timeout_connect);
|
||||
asio::async_read_until(session->connection->socket->next_layer(), response->content_buffer, "\r\n\r\n", [this, session, response](const error_code &ec, size_t /*bytes_transferred*/) {
|
||||
asio::async_read_until(session->connection->socket->next_layer(), response->streambuf, "\r\n\r\n", [this, session, response](const error_code &ec, size_t /*bytes_transferred*/) {
|
||||
session->connection->cancel_timeout();
|
||||
auto lock = session->connection->handler_runner->continue_lock();
|
||||
if(!lock)
|
||||
return;
|
||||
if((!ec || ec == asio::error::not_found) && response->streambuf.size() == response->streambuf.max_size()) {
|
||||
session->callback(session->connection, make_error_code::make_error_code(errc::message_size));
|
||||
return;
|
||||
}
|
||||
if(!ec) {
|
||||
if(!ResponseMessage::parse(response->content, response->http_version, response->status_code, response->header))
|
||||
session->callback(session->connection, make_error_code::make_error_code(errc::protocol_error));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue