From f393aa46bff4db3c13e1f443b2f32d94c468cc96 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 9 Aug 2022 22:29:35 +0200 Subject: [PATCH] BUG: "Bad file descriptor" in _close_all_clients() --- srcs/webserv/close.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/srcs/webserv/close.cpp b/srcs/webserv/close.cpp index cece6a3..2dcece0 100644 --- a/srcs/webserv/close.cpp +++ b/srcs/webserv/close.cpp @@ -9,10 +9,9 @@ void Webserv::_close_client(int fd) if (*it == fd) { // _epoll_update(fd, 0, EPOLL_CTL_DEL); // normalement superflu, DEBUG + std::cerr << "close fd " << fd << "\n"; if (::close(fd) == -1) std::perror("err close()"); - else - std::cerr << "close fd " << fd << "\n"; _clients.erase(it); break; } @@ -22,13 +21,18 @@ void Webserv::_close_client(int fd) void Webserv::_close_all_clients() { +/* +** BUG : (since last Hugo changes ? commit 482a389 ? or redirection problem ?) +** sometimes "err close(): Bad file descriptor" +** on fd>0 that should be valid (5, 6, ...) +** I seems to trigger the bug when i request multiples ressources before timeout +*/ while (!_clients.empty()) { // _epoll_update(_clients.back().fd, 0, EPOLL_CTL_DEL); // normalement superflu, DEBUG + std::cerr << "close fd " << _clients.back().get_cl_fd() << "\n"; if (::close(_clients.back().get_cl_fd()) == -1) std::perror("err close()"); - else - std::cerr << "close fd " << _clients.back().get_cl_fd() << "\n"; _clients.pop_back(); } } @@ -38,10 +42,9 @@ void Webserv::_close_all_listen_sockets() while (!_listen_sockets.empty()) { // _epoll_update(_listen_sockets.back().fd, 0, EPOLL_CTL_DEL); // normalement superflu, DEBUG + std::cerr << "close fd " << _listen_sockets.back().fd << "\n"; if (::close(_listen_sockets.back().fd) == -1) std::perror("err close()"); - else - std::cerr << "close fd " << _listen_sockets.back().fd << "\n"; _listen_sockets.pop_back(); } }