Debug in progress, somes fix but not the main problem
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user