summaryrefslogtreecommitdiff
path: root/src/session.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/session.cpp')
-rw-r--r--src/session.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/session.cpp b/src/session.cpp
index 84f1824..126d547 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -89,9 +89,9 @@ void CSession::recvLoop() {
const auto isCommand = g_pCommandHandler->isCommand(recvData->data);
if (isCommand)
- g_pCommandHandler->handleCommand(recvData->data, this);
+ g_pCommandHandler->handleCommand(recvData->data, self.lock());
- g_pChatManager->newMessage({.msg = recvData->data, .username = m_name, .sender = self->second, .admin = isCommand});
+ g_pChatManager->newMessage({.msg = recvData->data, .username = m_name, .sender = self, .admin = isCommand});
}
}
@@ -199,7 +199,7 @@ bool CSession::registerSession() {
log(LOG, "Client {} registered as: {}", m_ip, m_name);
- g_pSessionManager->broadcast(NFormatter::fmt(NONEWLINE, "{} has joined the chat", m_name), this);
+ g_pSessionManager->broadcast(NFormatter::fmt(NONEWLINE, "{} has joined the chat", m_name), self);
m_bDeaf = false;
return true;
@@ -219,7 +219,8 @@ bool CSession::write(const std::string &msg) {
}
bool CSession::writeChat(const CChatManager::SMessage &msg) {
- if (msg.sender ? this != msg.sender->get() : msg.username != m_name) {
+ const auto sender = msg.sender ? msg.sender->lock() : nullptr;
+ if (sender ? sender != self.lock() : msg.username != m_name) {
if (msg.admin && !m_isAdmin)
return false;
@@ -240,10 +241,6 @@ bool CSession::isAdmin() const {
return m_isAdmin;
}
-void CSession::setSelf(std::pair<std::jthread, std::shared_ptr<CSession>> *self) {
- this->self = self;
-}
-
template <typename... Args>
bool CSession::write(std::format_string<Args...> fmt, Args &&...args) {
if (m_bDeaf)