summaryrefslogtreecommitdiff
path: root/src/session.cpp
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-03-11 09:40:48 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-03-20 23:44:58 +0800
commit351432395eb0b7960e5ec6af7de3f30d56eacc24 (patch)
tree9cd91c9678881608a0ded46275b6d880b60f629d /src/session.cpp
parentf7c182585b32e4fbfae7cf26e91eb193216828ec (diff)
session(registerSession): don't errno, just break if reset by peer(disconnect)
Diffstat (limited to 'src/session.cpp')
-rw-r--r--src/session.cpp16
1 files changed, 8 insertions, 8 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() {