fix(request): check header size
This commit is contained in:
parent
ff5221c2d5
commit
5485a5a839
@ -36,6 +36,13 @@ const std::string &HttpRequest::getBody() const
|
|||||||
|
|
||||||
void HttpRequest::receiveData(const char *data, size_t length)
|
void HttpRequest::receiveData(const char *data, size_t length)
|
||||||
{
|
{
|
||||||
|
if (buffer_.size() + length > Http::Protocol::MAX_HEADER_SIZE && state_ == State::Headers) // !: This is a define but should be configurable
|
||||||
|
{
|
||||||
|
Log::warning("Request size exceeds maximum limit of " + std::to_string(Http::Protocol::MAX_HEADER_SIZE) +
|
||||||
|
" bytes");
|
||||||
|
state_ = State::Complete; // Mark as complete to avoid further processing
|
||||||
|
return;
|
||||||
|
}
|
||||||
Log::trace(LOCATION);
|
Log::trace(LOCATION);
|
||||||
buffer_.append(data, length);
|
buffer_.append(data, length);
|
||||||
parseBuffer();
|
parseBuffer();
|
||||||
@ -172,11 +179,11 @@ bool HttpRequest::parseBufferforChunkedBody()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// TODO: Copilot added this but I don't understand why it's needed
|
// TODO: Copilot added this but I don't understand why it's needed
|
||||||
// if (buffer_.size() < pos + Http::Protocol::CRLF.size() + chunkSize + Http::Protocol::CRLF.size())
|
if (buffer_.size() < pos + Http::Protocol::CRLF.size() + chunkSize + Http::Protocol::CRLF.size())
|
||||||
// {
|
{
|
||||||
// Log::debug("Chunked body waiting for more data: " + LOCATION);
|
Log::debug("Chunked body waiting for more data: " + LOCATION);
|
||||||
// return false; // Wait for more data
|
return false;
|
||||||
// }
|
}
|
||||||
body_ += buffer_.substr(pos + Http::Protocol::CRLF.size(), chunkSize);
|
body_ += buffer_.substr(pos + Http::Protocol::CRLF.size(), chunkSize);
|
||||||
buffer_.erase(0, pos + Http::Protocol::CRLF.size() + chunkSize + Http::Protocol::CRLF.size());
|
buffer_.erase(0, pos + Http::Protocol::CRLF.size() + chunkSize + Http::Protocol::CRLF.size());
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user