correct extract_line to avoid duplicate with erase or substr, and to resolve pbm of returning trailing delim

This commit is contained in:
hugogogo
2022-08-11 17:33:42 +02:00
parent ff77dfd298
commit ad2b5a629a
3 changed files with 91 additions and 55 deletions

View File

@@ -78,9 +78,13 @@ Client & Client::operator=( Client const & rhs )
void Client::parse_request(std::vector<ServerConfig> &servers)
{
clear_request(); // not mandatory
// debug
print_client("before");
_parse_request_line();
// debug
print_client("first line");
if (status)
return;
_parse_request_headers();
@@ -167,25 +171,26 @@ void Client::clear_script()
// debug
void Client::print_client(std::string message)
{
std::map<std::string, std::string>::iterator it;
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";
std::cout << "\n" << message << ":\n----------\n" << "raw_request:\n__\n";
::print_special(raw_request);
std::cout << "\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";
@@ -235,7 +240,13 @@ void Client::_parse_request_line()
std::string raw_line;
raw_line = ::get_line(raw_request, 0, CRLF);
line = ::split_trim(raw_line, " ", ' ');
// DEBUG
std::cout << "raw_line:[";
::print_special(raw_line);
std::cout << "]\n";
line = ::split_trim(raw_line, " ");
if (line.size() != 3)
{
std::cerr << "err _parse_first_line(): wrong number of elements (" << line.size() << " instead of 3)\n";