diff --git a/Server.cpp b/Server.cpp index 0973189..03c1dfc 100644 --- a/Server.cpp +++ b/Server.cpp @@ -54,6 +54,7 @@ void Server::run() { } } } + closeFds(); } void Server::createServerSocket() { @@ -163,3 +164,16 @@ void Server::clientCleanup(int fd) { } } } + +void Server::closeFds() { + for (size_t i = 0; i < _clients.size(); i++){ + int fd = _clients[i].getFd(); + std::cout << "Client <" << fd << "> Disconnected" << std::endl; + close(fd); + } + + if (_serverSocketFd != -1) + close(_serverSocketFd); + + _fds.clear(); +} \ No newline at end of file diff --git a/Server.hpp b/Server.hpp index 2bc93d9..ffd3669 100644 --- a/Server.hpp +++ b/Server.hpp @@ -35,6 +35,7 @@ class Server { void handleClientConnection(); void handleClientData(int fd); void clientCleanup(int fd); + void closeFds(); }; #endif \ No newline at end of file diff --git a/main.cpp b/main.cpp index 48a478f..919e49a 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,7 @@ int main(int ac, char **av) server.init(); server.run(); } catch (std::exception& e) { + server.closeFds(); std::cerr << e.what() << std::endl; return 1; }