From 84407173e0548be2ce5d13cca7d2c475b0f06a49 Mon Sep 17 00:00:00 2001 From: adjoly Date: Wed, 23 Apr 2025 16:23:20 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix:=20fixed?= =?UTF-8?q?=20invalid=20read=20and=20accept=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/Server.cpp | 11 ++++++++--- src/server/ServerUtils.cpp | 7 +------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/server/Server.cpp b/src/server/Server.cpp index 1da8308..ec8f0cd 100644 --- a/src/server/Server.cpp +++ b/src/server/Server.cpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/11 16:11:40 by adjoly #+# #+# */ -/* Updated: 2025/04/23 15:31:41 by adjoly ### ########.fr */ +/* Updated: 2025/04/23 16:22:22 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -93,6 +93,7 @@ void Server::_run(void) { fd.events = POLLIN; _client_fds.push_back(fd); _client_data.push_back(NULL); + _log->debug("new socket in poll"); } // to add signal instead of 727 @@ -112,6 +113,8 @@ void Server::_run(void) { accept((*it), (struct sockaddr *)&client_addr, &addrlen); if (client_fd < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) + continue; std::stringstream str; str << "Accept failed: "; str << strerror(errno); @@ -122,9 +125,11 @@ void Server::_run(void) { pollfd pfd; pfd.fd = client_fd; pfd.events = POLLIN | POLLOUT; + pfd.revents = 0; _client_fds.push_back(pfd); - struct sockaddr_in* new_client_sock = new sockaddr_in(); - std::memmove(new_client_sock, &client_addr, sizeof(struct sockaddr_in)); + struct sockaddr_in *new_client_sock = new sockaddr_in(); + std::memmove(new_client_sock, &client_addr, + sizeof(struct sockaddr_in)); _client_data.push_back(new_client_sock); } diff --git a/src/server/ServerUtils.cpp b/src/server/ServerUtils.cpp index 114448d..e2becb6 100644 --- a/src/server/ServerUtils.cpp +++ b/src/server/ServerUtils.cpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/17 11:58:42 by adjoly #+# #+# */ -/* Updated: 2025/04/23 15:33:00 by adjoly ### ########.fr */ +/* Updated: 2025/04/23 16:00:14 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,11 +47,6 @@ int Server::_createSocket(std::string host, int port) { return -1; } - if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) { - close(fd); - throw std::runtime_error("fcntl failed"); - } - int opt = 1; if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) { close(fd);