body write to CGI now monitored by epoll

+ kermit.jpg :)
This commit is contained in:
lperrey
2022-08-17 23:42:12 +02:00
parent 2613ca2e1a
commit b34e49311b
13 changed files with 302 additions and 193 deletions

View File

@@ -105,11 +105,12 @@ class Webserv
void _handle_last_signal();
// close.cpp
void _close_client(int fd);
void _close_client_cgi_pipes(Client *client);
void _close_all_clients();
void _close_all_clients_fd();
void _close_all_clients_cgi_fd();
void _close_cgi_pipe_rfd(int fd);
void _close_all_cgi_pipe_rfd();
void _close_all_clients_cgi_pipes();
void _close_cgi_pipe_r_from_child(int fd);
void _close_all_cgi_pipe_r_from_child();
void _close_all_listen_sockets();
void _reopen_lsocket(std::vector<listen_socket>::iterator it);
void _handle_epoll_error_lsocket(uint32_t events, std::vector<listen_socket>::iterator it);
@@ -124,6 +125,7 @@ class Webserv
// cgi.cpp
bool _is_cgi(Client *client, std::string path);
size_t _cgi_pos(Client *client, std::string &path, size_t pos);
void _cgi_open_pipes(Client *client);
void _exec_cgi(Client *client);
void _set_env_vector(Client *client, std::vector<std::string> &env_vector);
void _set_env_cstr(char *env_cstr[], std::vector<std::string> &env_vector);
@@ -136,11 +138,14 @@ class Webserv
void _check_fields_duplicates(Client *client, std::string & output);
void _add_script_body_length_header(std::string & output);
void _remove_body_leading_empty_lines(std::string & output);
Client *_find_cgi_fd(int cgi_fd);
void _read_cgi_output(Client *client);
void _handle_epoll_error_cgi_fd(uint32_t events, Client *client);
void _cgi_epollhup(uint32_t events, Client *client);
// cgi_epoll.cpp
void _read_cgi_output(Client *client);
void _handle_epollerr_cgi_output(uint32_t events, Client *client);
void _handle_epollhup_cgi_output(uint32_t events, Client *client);
void _cgi_input_ready(Client *client);
void _handle_epollerr_cgi_input(uint32_t events, Client *client);
Client *_find_cgi_output_fd(int fd);
Client *_find_cgi_input_fd(int fd);
///////////////////////