🔨」 fix: fixed leak

This commit is contained in:
2025-04-25 17:22:15 +02:00
parent 5ce135594b
commit 202a403430
6 changed files with 38 additions and 27 deletions

View File

@ -6,11 +6,12 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/11 16:11:40 by adjoly #+# #+# */
/* Updated: 2025/04/25 15:21:43 by adjoly ### ########.fr */
/* Updated: 2025/04/25 17:21:54 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "cppeleven.hpp"
#include <algorithm>
#include <cerrno>
#include <cmath>
#include <cstring>
@ -145,11 +146,10 @@ void Server::_run(void) {
for (size_t i = _fds_server.size(); i < _client_fds.size(); ++i) {
if (_client_fds[i].revents & POLLERR) {
close(_client_fds[i].fd);
_client_fds.erase(_client_fds.begin() + i);
delete _client_data[i - _fds_server.size()];
_client_data.erase(_client_data.begin() + i);
i--;
// close(_client_fds[i].fd);
//_client_fds.erase(_client_fds.begin() + i);
// delete _client_data[i - _fds_server.size()];
//_client_data.erase(_client_data.begin() + i);
} else if (_client_fds[i].revents & POLLIN) {
Client *client = _getClient(_client_fds[i].fd);
if (client == not_nullptr) {
@ -164,10 +164,18 @@ void Server::_run(void) {
continue;
}
client->answer();
_client_data.erase(std::find(_client_data.begin(),
_client_data.end(), client));
delete client;
for (auto it = range (_client_fds)) {
if (_client_fds[i].fd == (*it).fd) {
_client_fds.erase(it);
break;
}
}
close(_client_fds[i].fd);
}
}
_destroy_clients();
}
}