From f8343098e857f2e92e433eceac04a96897b88605 Mon Sep 17 00:00:00 2001 From: Talyx Date: Tue, 1 Feb 2022 17:39:45 +0300 Subject: [PATCH] fix: delete client, if he empty --- src/Client/Client.cpp | 14 +++++++++++++- src/Client/Client.hpp | 4 ++-- src/Client/Request.cpp | 2 ++ src/Server/Server.cpp | 4 ++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Client/Client.cpp b/src/Client/Client.cpp index 693e19b..ba0603a 100644 --- a/src/Client/Client.cpp +++ b/src/Client/Client.cpp @@ -149,7 +149,10 @@ std::string Client::generateRespons(void) bool Client::readyToSend(void) { - return(_request.ok()); + if (_request.ok()) + return(_request.ok()); + else + return false; } void Client::printClientInfo(void) @@ -183,6 +186,15 @@ void Client::printClientInfo(void) } +bool Client::isEmpty(void) +{ + if (!_request.ok() && _request.getHeaderSize() == 0 + && _request.getContentLength() == 0) + return (true); + else + return (false); +} + void Client::clear(void) { _fd = -1; diff --git a/src/Client/Client.hpp b/src/Client/Client.hpp index d5cddd1..65a0857 100644 --- a/src/Client/Client.hpp +++ b/src/Client/Client.hpp @@ -37,8 +37,8 @@ public: void setRawData(char *); void setFd(int); int getFd(void); - unsigned int getRecvCounter(void) const; - + unsigned int getRecvCounter(void) const; + bool isEmpty(void); public: int parseRequest(void); diff --git a/src/Client/Request.cpp b/src/Client/Request.cpp index e61e19e..e1201bb 100644 --- a/src/Client/Request.cpp +++ b/src/Client/Request.cpp @@ -11,6 +11,7 @@ Request::Request() _head_ok = false; _body_ok = false; _received = 0; + _headerSize = 0; } @@ -24,6 +25,7 @@ Request::Request(char *str) _received = 0; _chunked = false; _contentLength = 0; + _headerSize = 0; } //-------------------------------------------------Get/Set--------------------------------------- diff --git a/src/Server/Server.cpp b/src/Server/Server.cpp index 9b8d0cc..2937470 100644 --- a/src/Server/Server.cpp +++ b/src/Server/Server.cpp @@ -154,7 +154,7 @@ void Server::start(void) std::cout << TURQ << "IN SEND LOOP" << RESET << std::endl; Client &client = client_it->second; - if (!client.allRead) + if (!client.allRead && !client.isEmpty()) { readSocket(client_it->first, client_map); } @@ -168,7 +168,7 @@ void Server::start(void) } - if (client.readyToSend() && client.allSended()) + if ((client.readyToSend() && client.allSended()) || client.isEmpty()) { client_map[fd].printClientInfo(); close(client_it->first);