body write to CGI now monitored by epoll
+ kermit.jpg :)
This commit is contained in:
@@ -13,6 +13,7 @@ void Webserv::_close_client(int fd)
|
||||
std::cerr << "close fd " << fd << "\n";
|
||||
if (::close(fd) == -1)
|
||||
std::perror("err close()");
|
||||
_close_client_cgi_pipes(&(*it));
|
||||
_clients.erase(it);
|
||||
break;
|
||||
}
|
||||
@@ -20,6 +21,22 @@ void Webserv::_close_client(int fd)
|
||||
}
|
||||
}
|
||||
|
||||
void Webserv::_close_client_cgi_pipes(Client *client)
|
||||
{
|
||||
if (client->cgi_state)
|
||||
{
|
||||
std::cerr << "close cgi-pipes" << "\n";
|
||||
if (::close(client->cgi_pipe_w_to_child) == -1)
|
||||
std::perror("err close()");
|
||||
if (::close(client->cgi_pipe_r_from_child) == -1)
|
||||
std::perror("err close()");
|
||||
if (::close(client->cgi_pipe_w_to_parent) == -1)
|
||||
std::perror("err close()");
|
||||
if (::close(client->cgi_pipe_r_from_parent) == -1)
|
||||
std::perror("err close()");
|
||||
}
|
||||
}
|
||||
|
||||
void Webserv::_close_all_clients()
|
||||
{
|
||||
_close_all_clients_fd();
|
||||
@@ -28,7 +45,7 @@ void Webserv::_close_all_clients()
|
||||
|
||||
void Webserv::_close_all_clients_fd()
|
||||
{
|
||||
_close_all_clients_cgi_fd();
|
||||
_close_all_clients_cgi_pipes();
|
||||
std::vector<Client>::iterator it = _clients.begin();
|
||||
std::vector<Client>::iterator it_end = _clients.end();
|
||||
while (it != it_end)
|
||||
@@ -41,19 +58,14 @@ void Webserv::_close_all_clients_fd()
|
||||
}
|
||||
}
|
||||
|
||||
void Webserv::_close_all_clients_cgi_fd()
|
||||
void Webserv::_close_all_clients_cgi_pipes()
|
||||
{
|
||||
std::vector<Client>::iterator it = _clients.begin();
|
||||
std::vector<Client>::iterator it_end = _clients.end();
|
||||
while (it != it_end)
|
||||
{
|
||||
// _epoll_update(_clients.back().fd, 0, EPOLL_CTL_DEL); // normalement superflu, DEBUG
|
||||
if (it->cgi_pipe_rfd)
|
||||
{
|
||||
std::cerr << "close cgi-fd " << it->cgi_pipe_rfd << "\n";
|
||||
if (::close(it->cgi_pipe_rfd) == -1)
|
||||
std::perror("err close()");
|
||||
}
|
||||
_close_client_cgi_pipes(&(*it));
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user