diff --git a/exemples/test.toml b/exemples/test.toml index 3dcb166..209f381 100644 --- a/exemples/test.toml +++ b/exemples/test.toml @@ -1,7 +1,7 @@ log_file = "test.log" [server] -server_names = { "localhost", "2B5.local" } +# server_names = { "localhost", "2B5.local" } host = "0.0.0.0" port = 8080 diff --git a/flake.nix b/flake.nix index 95a7555..8c0b565 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,7 @@ nixd nixfmt-rfc-style norminette + siege valgrind git gdb diff --git a/src/requests_handling/requestImplementation/Get.cpp b/src/requests_handling/requestImplementation/Get.cpp index d83af95..0caf11c 100644 --- a/src/requests_handling/requestImplementation/Get.cpp +++ b/src/requests_handling/requestImplementation/Get.cpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/30 09:40:16 by adjoly #+# #+# */ -/* Updated: 2025/05/30 16:20:15 by adjoly ### ########.fr */ +/* Updated: 2025/05/30 16:22:24 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,10 +34,7 @@ Get::Get(std::string &data, config::Server *srv) { this->parse(data); } -Get::~Get(void) { - // if (_url != not_nullptr) - // delete _url; -} +Get::~Get(void) {} void Get::parse(std::string const &data) { std::istringstream stream(data); @@ -142,6 +139,8 @@ Response Get::execute(void) { server::PfdManager::remove(_cgi->getId()); server::ResourceManager::remove(_cgi->getId()); _cgi = not_nullptr; + if (_url != not_nullptr) + delete _url; return response; } std::string str = static_cast(_cgi)->str(); @@ -150,6 +149,8 @@ Response Get::execute(void) { server::PfdManager::remove(_cgi->getId()); server::ResourceManager::remove(_cgi->getId()); _cgi = not_nullptr; + if (_url != not_nullptr) + delete _url; return response; } @@ -180,8 +181,11 @@ Response Get::execute(void) { struct stat file_stat; std::vector files; - if ((dir = opendir(this->_target.c_str())) == NULL) + if ((dir = opendir(this->_target.c_str())) == NULL) { + if (_url != not_nullptr) + delete _url; throw; + } while ((entry = readdir(dir)) != NULL) { std::string file_name = entry->d_name; if (file_name == ".") @@ -235,8 +239,11 @@ body {\n\ response.addHeader("Content-Length", length.str()); response.addHeader("Content-Type", "text/html"); response.setBody(body); - } else + } else { + if (_url != not_nullptr) + delete _url; throw std::runtime_error("dir but no dirlist"); + } } else { std::ifstream file(this->_target.c_str(), std::ios::binary); std::streampos file_start = file.tellg(); diff --git a/src/server/ServerHandle.cpp b/src/server/ServerHandle.cpp index 9d5bbfe..54c6b14 100644 --- a/src/server/ServerHandle.cpp +++ b/src/server/ServerHandle.cpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/27 18:22:48 by adjoly #+# #+# */ -/* Updated: 2025/05/30 15:48:16 by adjoly ### ########.fr */ +/* Updated: 2025/05/30 16:30:40 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,10 +62,11 @@ void Server::_handle_client(size_t *i) { if (PfdManager::getType(PfdManager::at(*i).fd)) { if (PfdManager::at(*i).revents & POLLERR) { _log->debug("pollerr"); - close(PfdManager::at(*i).fd); + Client *client = _getClient(PfdManager::at(*i).fd); + _client_data.erase( + std::find(_client_data.begin(), _client_data.end(), client)); + delete client; PfdManager::remove(PfdManager::at(*i).fd); - delete _client_data[*i - _fds_server.size()]; - _client_data.erase(_client_data.begin() + *i); } else if (PfdManager::at(*i).revents & POLLIN) { _log->debug("pollin"); Client *client = _getClient(PfdManager::at(*i).fd); @@ -133,7 +134,7 @@ void Server::_handle_resource(size_t i) { if (!res->isProcessed() && res->isReady()) { res->process(); // if (res->type() == CGI) { - _log->info("processingggg"); + _log->info("processingggg"); // } else if (pfd.revents & res->event()) { // res->process(); // _log->info("processingggg"); diff --git a/vgcore.78629 b/vgcore.78629 new file mode 100644 index 0000000..2e7f02c Binary files /dev/null and b/vgcore.78629 differ diff --git a/vgcore.80790 b/vgcore.80790 new file mode 100644 index 0000000..8b88934 Binary files /dev/null and b/vgcore.80790 differ