Debug in progress, somes fix but not the main problem

This commit is contained in:
lperrey
2022-08-18 06:03:09 +02:00
parent a008c12058
commit 3d17db996a
13 changed files with 136 additions and 117 deletions

View File

@@ -12,8 +12,9 @@ void Webserv::run()
int i;
int count_loop = 0;
std::vector<listen_socket>::iterator it_lsocket;
Client *client_cgi_output = NULL;
std::vector<Client>::iterator it_client;
Client *client_cgi_input = NULL;
Client *client_cgi_output = NULL;
g_run = true;
while (g_run)
@@ -37,8 +38,10 @@ void Webserv::run()
{
try {
it_lsocket = std::find(_listen_sockets.begin(), _listen_sockets.end(), events[i].data.fd);
client_cgi_output = _find_cgi_output_fd(events[i].data.fd);
it_client = std::find(_clients.begin(), _clients.end(), events[i].data.fd);
client_cgi_input = _find_cgi_input_fd(events[i].data.fd);
client_cgi_output = _find_cgi_output_fd(events[i].data.fd);
if (it_lsocket != _listen_sockets.end())
{
if (events[i].events & EPOLLERR || events[i].events & EPOLLHUP)
@@ -46,6 +49,15 @@ void Webserv::run()
else if (events[i].events & EPOLLIN)
_accept_connection(*it_lsocket);
}
else if (it_client != _clients.end())
{
if (events[i].events & EPOLLERR || events[i].events & EPOLLHUP)
_handle_epoll_error_client(events[i].events, events[i].data.fd);
else if (events[i].events & EPOLLIN)
_request( &(*it_client) );
else if (events[i].events & EPOLLOUT)
_response( &(*it_client) );
}
else if (client_cgi_input)
{
if (events[i].events & EPOLLERR || events[i].events & EPOLLHUP)
@@ -62,14 +74,9 @@ void Webserv::run()
else if ( (events[i].events & EPOLLHUP) && !(events[i].events & EPOLLIN) )
_handle_epollhup_cgi_output(events[i].events, client_cgi_output);
}
else if (std::find(_clients.begin(), _clients.end(), events[i].data.fd) != _clients.end()) // TODO: save the it in var to avoid multiples find()
else
{
if (events[i].events & EPOLLERR || events[i].events & EPOLLHUP)
_handle_epoll_error_client(events[i].events, events[i].data.fd);
else if (events[i].events & EPOLLIN)
_request( &(*std::find(_clients.begin(), _clients.end(), events[i].data.fd)) );
else if (events[i].events & EPOLLOUT)
_response( &(*std::find(_clients.begin(), _clients.end(), events[i].data.fd)) );
std::cerr << "NOTHING FOR FD = " << events[i].data.fd << "\n"; // DEBUG
}
++i;
if (!g_run)