diff options
Diffstat (limited to 'src/session.cpp')
| -rw-r--r-- | src/session.cpp | 16 |
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() { |
