Merge branch 'master' of bitbucket.org:LuckyLaszlo/webserv

This commit is contained in:
Hugo LAMY
2022-08-14 01:09:25 +02:00
7 changed files with 46 additions and 37 deletions

View File

@@ -92,7 +92,7 @@ void Client::parse_request_headers(std::vector<ServerConfig> &servers)
_parse_request_fields();
// DEBUG
print_client("headers");
// print_client("headers");
if (status)
return;
@@ -104,7 +104,7 @@ print_client("headers");
_parse_port_hostname(this->get_rq_headers("Host")); // use getter for headers because it works case insensitive
// DEBUG
std::cerr << get_rq_method_str() << " " << get_rq_target() << " " << get_rq_version() << "\n";
// std::cerr << get_rq_method_str() << " " << get_rq_target() << " " << get_rq_version() << "\n";
// dont clear raw_request, we need it for future reparsing of body
// see call of parse_request() in _read_request()
@@ -113,6 +113,7 @@ std::cerr << get_rq_method_str() << " " << get_rq_target() << " " << get_rq_vers
void Client::parse_request_body()
{
std::cerr << "parse_request_body()\n";
size_t pos;
pos = raw_request.find(CRLF CRLF);
@@ -142,28 +143,29 @@ void Client::parse_request_body()
pos = 0;
while (chunk_size != 0)
{
if (pos > _request.body.size())
/* if (pos > _request.body.size())
{
std::cerr << "parse_request_body(), pos > size()\n";
// status = 400;
return;
}
} */
/*
if (pos == _request.body.size())
{
std::cerr << "parse_request_body(), will reread till last chunk\n";
return;
}
} */
endptr_copy = endptr;
/* endptr_copy = endptr; */
(void)endptr_copy;
chunk_size = std::strtoul(&_request.body[pos], &endptr, 16);
if (chunk_size == LONG_MAX && errno == ERANGE)
status = 413;
if (endptr == endptr_copy)
/* if (chunk_size == LONG_MAX && errno == ERANGE)
status = 413; */
/* if (endptr == endptr_copy)
{
std::cerr << "parse_request_body(), no conversion possible\n";
return;
}
} */
chunk_field_end = _request.body.find(CRLF, pos);
@@ -184,6 +186,11 @@ void Client::parse_request_body()
}
else
{
std::cerr << "Content-Length = " << std::strtoul(get_rq_headers("Content-Length").c_str(), NULL, 10) << "\n";
std::cerr << "raw_request.size() - pos = " << raw_request.size() - pos << "\n";
_request.body = raw_request.substr(pos);
std::cerr << "_request.body.size() = " << _request.body.size() << "\n";
if (raw_request.size() - pos >= std::strtoul(get_rq_headers("Content-Length").c_str(), NULL, 10))
{
_request.body = raw_request.substr(pos);