diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-03-11 09:40:48 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-03-20 23:44:58 +0800 |
| commit | 351432395eb0b7960e5ec6af7de3f30d56eacc24 (patch) | |
| tree | 9cd91c9678881608a0ded46275b6d880b60f629d /src | |
| parent | f7c182585b32e4fbfae7cf26e91eb193216828ec (diff) | |
session(registerSession): don't errno, just break if reset by peer(disconnect)
Diffstat (limited to 'src')
| -rw-r--r-- | src/session.cpp | 16 | ||||
| -rw-r--r-- | src/session.hpp | 2 |
2 files changed, 9 insertions, 9 deletions
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() { diff --git a/src/session.hpp b/src/session.hpp index 6f1382c..b446f4c 100644 --- a/src/session.hpp +++ b/src/session.hpp @@ -36,7 +36,7 @@ class CSession { Hyprutils::OS::CFileDescriptor m_sockfd; std::string m_name; void recvLoop(); - void registerSession(); + bool registerSession(); void onConnect(); void onDisconnect(); void onErrno(eEventType); |
