debug new request parsing
This commit is contained in:
@@ -77,18 +77,16 @@ Client & Client::operator=( Client const & rhs )
|
||||
// https://www.tutorialspoint.com/http/http_requests.htm
|
||||
void Client::parse_request(std::vector<ServerConfig> &servers)
|
||||
{
|
||||
// std::map<std::string, std::string> headers;
|
||||
// std::string body;
|
||||
std::string copy_request;
|
||||
|
||||
// DEBUG
|
||||
// std::cout << "\nREQUEST ____________\n" << raw_request << "\n_____________\n";
|
||||
clear_request(); // not mandatory
|
||||
|
||||
_parse_request_line(copy_request);
|
||||
_parse_request_line();
|
||||
// debug
|
||||
print_client("first line");
|
||||
if (status)
|
||||
return;
|
||||
_parse_request_headers(copy_request);
|
||||
_parse_request_headers();
|
||||
// debug
|
||||
print_client("headers");
|
||||
|
||||
if (status)
|
||||
return;
|
||||
assigned_server = ::_determine_process_server(this, servers);
|
||||
@@ -106,11 +104,11 @@ void Client::parse_request(std::vector<ServerConfig> &servers)
|
||||
|
||||
void Client::parse_request_body()
|
||||
{
|
||||
size_t pos;
|
||||
size_t pos;
|
||||
|
||||
pos = raw_request.find(CRLF CRLF);
|
||||
pos += std::string(CRLF CRLF).size();
|
||||
_request.body = message.substr(pos);
|
||||
_request.body = raw_request.substr(pos);
|
||||
|
||||
if (_request.body.size() > assigned_server->client_body_limit)
|
||||
status = 413; // HTTP Client Errors
|
||||
@@ -166,6 +164,32 @@ void Client::clear_script()
|
||||
_request.script.info.clear();
|
||||
}
|
||||
|
||||
// debug
|
||||
void Client::print_client(std::string message)
|
||||
{
|
||||
std::map<std::string, std::string>::iterator it;
|
||||
|
||||
std::cout << "\n=== DEBUG PRINT CLIENT ===\n";
|
||||
std::cout << "\n" << message << ":\n----------\n"
|
||||
<< "raw_request:\n__\n" << raw_request << "\n__\n"
|
||||
<< "get_cl_fd() : " << get_cl_fd() << "\n"
|
||||
<< "get_cl_port() : " << get_cl_port() << "\n"
|
||||
<< "get_cl_ip() : " << get_cl_ip() << "\n"
|
||||
<< "get_rq_method_str() : " << get_rq_method_str() << "\n"
|
||||
<< "get_rq_uri() : " << get_rq_uri() << "\n"
|
||||
<< "get_rq_abs_path() : " << get_rq_abs_path() << "\n"
|
||||
<< "get_rq_query() : " << get_rq_query() << "\n"
|
||||
<< "get_rq_version() : " << get_rq_version() << "\n"
|
||||
<< "get_rq_body() : " << get_rq_body() << "\n"
|
||||
<< "get_rq_port() : " << get_rq_port() << "\n"
|
||||
<< "get_rq_hostname() : " << get_rq_hostname() << "\n"
|
||||
<< "get_rq_script_path() : " << get_rq_script_path() << "\n"
|
||||
<< "get_rq_script_info() : " << get_rq_script_info() << "\n"
|
||||
<< "headers : " << "\n";
|
||||
for (it = _request.headers.begin(); it != _request.headers.end(); it++)
|
||||
std::cout << " " << it->first << ": " << it->second << "\n";
|
||||
std::cout << "\n=== END DEBUG ===\n\n";
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
* GETTERS
|
||||
@@ -209,13 +233,12 @@ void Client::_parse_request_line()
|
||||
{
|
||||
std::vector<std::string> line;
|
||||
std::string raw_line;
|
||||
int ret;
|
||||
|
||||
raw_line = ::get_line(raw_request, 0, CRLF);
|
||||
line = ::split_trim(raw_line, " ", ' ');
|
||||
if (line.size() != 3)
|
||||
{
|
||||
std::cerr << "err _parse_first_line(): wrong number of elements (" << ret << " instead of 3)\n";
|
||||
std::cerr << "err _parse_first_line(): wrong number of elements (" << line.size() << " instead of 3)\n";
|
||||
status = 400; // "bad request"
|
||||
}
|
||||
else
|
||||
@@ -247,9 +270,10 @@ void Client::_parse_request_headers()
|
||||
|
||||
headers = raw_request;
|
||||
// extract header part
|
||||
::extract_line(headers, 0, CRLF);
|
||||
pos = headers.find(CRLF);
|
||||
::extract_line(headers, pos); // delete from pos to the end
|
||||
::extract_line(headers, 0, CRLF); // delete first line
|
||||
pos = headers.find(CRLF CRLF);
|
||||
// ::extract_line(headers, pos); // delete from empty line to the end
|
||||
headers.erase(pos); //delete from empty line to the end
|
||||
// copy result of parser into headers
|
||||
ret = ::parse_http_headers(raw_request, _request.headers);
|
||||
if (ret > 0)
|
||||
|
||||
Reference in New Issue
Block a user