diff options
Diffstat (limited to 'src/sessionManager.cpp')
| -rw-r--r-- | src/sessionManager.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/sessionManager.cpp b/src/sessionManager.cpp index cb8a2d4..3d60db2 100644 --- a/src/sessionManager.cpp +++ b/src/sessionManager.cpp @@ -55,7 +55,16 @@ void CSessionManager::broadcastChat(const CChatManager::SMessage &msg) const { } bool CSessionManager::nameExists(const std::string &name) { - return std::ranges::any_of(m_vSessions, [&name](const auto &s) { return s.second->getName() == name; }); + auto it = std::ranges::find_if(m_vSessions, [&name](const auto &s) { return s.second->getName() == name; }); + + if (it != m_vSessions.end()) { + if (!it->second->isValid()) { + kick(it->second.get(), true, "Connection lost"); + return false; + } + return true; + } + return false; } CSession *CSessionManager::getByName(const std::string &name) const { |
