From 8a676a7f7c708ea3990af20333a03bfa358a5868 Mon Sep 17 00:00:00 2001 From: thaiismeneses Date: Wed, 8 Oct 2025 21:06:02 -0300 Subject: [PATCH 1/3] fix: variable not initialized --- .vscode/settings.json | 54 +++++++++++++++++++++++++++++++++++++++++++ Makefile | 5 +++- srcs/parsing.cpp | 13 +++++++---- srcs/server.cpp | 18 +++++++++++++++ 4 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1fb1237 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,54 @@ +{ + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "csignal": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "map": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} diff --git a/Makefile b/Makefile index cd07831..fb3d8ac 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CXX = c++ -CXXFLAGS = -Wall -Wextra -Werror -std=c++98 +CXXFLAGS = -Wall -Wextra -Werror -std=c++98 -g OBJDIR = obj SRCS = $(shell find . -name "*.cpp") OBJS = $(patsubst %.cpp,$(OBJDIR)/%.o,$(SRCS)) @@ -22,6 +22,9 @@ fclean: clean re: fclean all +valgrind: re + valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --track-fds=yes ./ircserv 6667 1234 + # The following commands are used for containerized builds in the macOS environment. # Ensure you have the 'container' command available, which is a native macOS Docker, # realeased in june 2025. diff --git a/srcs/parsing.cpp b/srcs/parsing.cpp index 6487c41..c7362a3 100644 --- a/srcs/parsing.cpp +++ b/srcs/parsing.cpp @@ -1,6 +1,13 @@ #include "../incs/ircserv.hpp" #include +void initPollFd(int incofd, struct pollfd &NewPoll) +{ + memset(&NewPoll, 0, sizeof(NewPoll)); + NewPoll.fd = incofd; + NewPoll.events = POLLIN; + NewPoll.revents = 0; +} void Parser::handleDccSend(Server *server, const std::string &target, const std::string &filename, int clientFd) { @@ -20,8 +27,7 @@ void Parser::handleDccSend(Server *server, const std::string &target, const std: if (dccServer->init() != -1) { struct pollfd newPollFd; - newPollFd.fd = dccServer->getSockfd(); - newPollFd.events = POLLIN; + initPollFd(dccServer->getSockfd(), newPollFd); server->addPollFd(newPollFd); server->addDccServer(dccServer); @@ -81,8 +87,7 @@ void Parser::handleDccGet(Server *server, const std::string &targetNick, const s if (dccClient->init() != -1) { struct pollfd newPollFd; - newPollFd.fd = dccClient->getSockfd(); - newPollFd.events = POLLIN; + initPollFd(dccClient->getSockfd(), newPollFd); server->addPollFd(newPollFd); server->addDccClient(dccClient); server->SendToClient(clientFd, "DCC GET initiated for file '" + Filename + "' from user '" + targetNick + "'\r\n"); diff --git a/srcs/server.cpp b/srcs/server.cpp index 305400d..d508c55 100644 --- a/srcs/server.cpp +++ b/srcs/server.cpp @@ -39,6 +39,7 @@ void Server::SetAtributes(int port, std::string password) { void setupPollFd(int incofd, struct pollfd &NewPoll) { + memset(&NewPoll, 0, sizeof(NewPoll)); NewPoll.fd = incofd; NewPoll.events = POLLIN; NewPoll.revents = 0; @@ -52,6 +53,8 @@ std::string Server::getServerName() const void Server::ServerConfig() { struct sockaddr_in add; struct pollfd NewPoll; + + memset(&add, 0, sizeof(add)); add.sin_family = AF_INET; add.sin_port = htons(this->Port); add.sin_addr.s_addr = INADDR_ANY; @@ -90,6 +93,11 @@ void Server::HandlePollEvents() { if (fds[i].revents & POLLOUT) { FlushClient(fds[i].fd); } + if (fds[i].revents & (POLLHUP | POLLERR)) { + if (fds[i].fd == ServerSocketFd) { + ClearClients(fds[i].fd); + } + } } } @@ -98,6 +106,16 @@ void Server::CloseFds() { std::cout << RED << "Cliente <" << clients[i].GetFd() << "> Desconectado" << WHI << std::endl; close(clients[i].GetFd()); } + for (size_t i = 0; i < dccServers.size(); i++) { + if (dccServers[i]->getSockfd() != -1) { + close(dccServers[i]->getSockfd()); + } + } + for (size_t i = 0; i < dccClients.size(); i++) { + if (dccClients[i]->getSockfd() != -1) { + close(dccClients[i]->getSockfd()); + } + } if (ServerSocketFd != -1) { std::cout << RED << "Servidor <" << ServerSocketFd << "> Desconectado" << WHI << std::endl; close(ServerSocketFd); From 132562033594c75ecf992bc67889aadcf3e4be1b Mon Sep 17 00:00:00 2001 From: thaiismeneses Date: Wed, 8 Oct 2025 21:42:44 -0300 Subject: [PATCH 2/3] fix: revert changes from server --- srcs/server.cpp | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/srcs/server.cpp b/srcs/server.cpp index d508c55..305400d 100644 --- a/srcs/server.cpp +++ b/srcs/server.cpp @@ -39,7 +39,6 @@ void Server::SetAtributes(int port, std::string password) { void setupPollFd(int incofd, struct pollfd &NewPoll) { - memset(&NewPoll, 0, sizeof(NewPoll)); NewPoll.fd = incofd; NewPoll.events = POLLIN; NewPoll.revents = 0; @@ -53,8 +52,6 @@ std::string Server::getServerName() const void Server::ServerConfig() { struct sockaddr_in add; struct pollfd NewPoll; - - memset(&add, 0, sizeof(add)); add.sin_family = AF_INET; add.sin_port = htons(this->Port); add.sin_addr.s_addr = INADDR_ANY; @@ -93,11 +90,6 @@ void Server::HandlePollEvents() { if (fds[i].revents & POLLOUT) { FlushClient(fds[i].fd); } - if (fds[i].revents & (POLLHUP | POLLERR)) { - if (fds[i].fd == ServerSocketFd) { - ClearClients(fds[i].fd); - } - } } } @@ -106,16 +98,6 @@ void Server::CloseFds() { std::cout << RED << "Cliente <" << clients[i].GetFd() << "> Desconectado" << WHI << std::endl; close(clients[i].GetFd()); } - for (size_t i = 0; i < dccServers.size(); i++) { - if (dccServers[i]->getSockfd() != -1) { - close(dccServers[i]->getSockfd()); - } - } - for (size_t i = 0; i < dccClients.size(); i++) { - if (dccClients[i]->getSockfd() != -1) { - close(dccClients[i]->getSockfd()); - } - } if (ServerSocketFd != -1) { std::cout << RED << "Servidor <" << ServerSocketFd << "> Desconectado" << WHI << std::endl; close(ServerSocketFd); From d4ed2f77bc6f3cdbb91ceca25f536e19a5d8ee23 Mon Sep 17 00:00:00 2001 From: thaiismeneses Date: Wed, 8 Oct 2025 21:44:47 -0300 Subject: [PATCH 3/3] delete: .vscode --- .vscode/settings.json | 54 ------------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 1fb1237..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "files.associations": { - "array": "cpp", - "atomic": "cpp", - "bit": "cpp", - "cctype": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "compare": "cpp", - "concepts": "cpp", - "csignal": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdint": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "deque": "cpp", - "map": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "random": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "fstream": "cpp", - "initializer_list": "cpp", - "iomanip": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "streambuf": "cpp", - "typeinfo": "cpp" - } -}