From 351432395eb0b7960e5ec6af7de3f30d56eacc24 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Tue, 11 Mar 2025 09:40:48 +0800 Subject: session(registerSession): don't errno, just break if reset by peer(disconnect) --- src/session.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/session.cpp') diff --git a/src/session.cpp b/src/session.cpp index a6875b0..9838c3a 100644 --- a/src/session.cpp +++ b/src/session.cpp @@ -82,33 +82,33 @@ CSession::SRecvData CSession::read(const std::string &msg) { void CSession::run() { onConnect(); - registerSession(); - recvLoop(); + if (registerSession()) + recvLoop(); g_pSessionManager->removeSession(self); } -void CSession::registerSession() { +bool CSession::registerSession() { SRecvData recvData = read("Name: "); if (!recvData.good) - return; + return false; if (recvData.data[0] == '\n' || recvData.data[0] == ' ') { write("Name cannot be empty", eFormatType::ERR); - registerSession(); - return; + return registerSession(); } *std::remove(recvData.data, recvData.data+strlen(recvData.data), '\n') = '\0'; if (g_pSessionManager->nameExists(recvData.data)) { write("Name already exists", eFormatType::ERR); - registerSession(); - return; + return registerSession(); } this->m_name = recvData.data; log(LOG, "Client registered as: {}", m_name); + + return true; } bool CSession::isValid() { -- cgit v1.2.3