wip debug comparison fields output script

This commit is contained in:
hugogogo
2022-08-11 19:42:09 +02:00
parent a1fff0f8c2
commit 3a58b5d921
7 changed files with 86 additions and 39 deletions

View File

@@ -79,12 +79,10 @@ void Client::parse_request_headers(std::vector<ServerConfig> &servers)
{
clear_request(); // not mandatory
_parse_request_line();
// debug
print_client("first line");
if (status)
return;
_parse_request_fields();
// debug
// DEBUG
print_client("headers");
if (status)
return;
@@ -93,8 +91,7 @@ print_client("headers");
_check_request_errors();
if (status)
return;
// use getter for headers because it works case insensitive
_parse_port_hostname(this->get_rq_headers("Host"));
_parse_port_hostname(this->get_rq_headers("Host")); // use getter for headers because it works case insensitive
// dont clear raw_request, we need it for future reparsing of body
// see call of parse_request() in _read_request()
@@ -169,7 +166,7 @@ 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";
std::cout << message << ":\n----------\n\n" << "raw_request:\n__\n";
::print_special(raw_request);
std::cout << "\n__\n"
<< "get_cl_fd() : [" << get_cl_fd() << "]\n"
@@ -187,8 +184,8 @@ void Client::print_client(std::string message)
<< "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";
std::cout << " " << it->first << ": [" << it->second << "]\n";
std::cout << "\n=== END PRINT CLIENT ===\n\n";
}
/*********************************************
@@ -269,16 +266,22 @@ void Client::_parse_request_fields()
int ret;
headers = raw_request;
// extract header part
::extract_line(headers, 0, CRLF); // delete first line
// delete first line
pos = headers.find(CRLF);
if (pos != std::string::npos)
headers.erase(0, pos + std::string(CRLF).size());
// delete body part
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
if (pos != std::string::npos)
headers.erase(pos);
else {
std::cerr << "err _parse_request_fields(): request header doesn't end with empty line\n";
status = 400; // "bad request"
}
// copy result of parser into headers
ret = ::parse_http_headers(raw_request, _request.headers);
if (ret > 0)
{
std::cerr << "err _parse_request_headers(): " << ret << " field are bad formated\n";
ret = ::parse_http_headers(headers, _request.headers);
if (ret > 0) {
std::cerr << "err _parse_request_fields(): " << ret << " fields are bad formated\n";
status = 400; // "bad request"
}
}