summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-12-21 10:35:57 -0500
committerAdam <Adam@anope.org>2016-12-21 10:35:57 -0500
commit574c8dfbc798df444899b4907efc50a40ec6e4a4 (patch)
treec3f574fd49be4534bdecd270801faf183a9c5016
parent438103199485f0e0e80289874f6f5cf70f8a76e3 (diff)
Fix previous commit, deleting sessions removes it from the map which invalidates the reference
-rw-r--r--modules/m_sasl.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/modules/m_sasl.cpp b/modules/m_sasl.cpp
index 3dff6c41f..cb7030bb4 100644
--- a/modules/m_sasl.cpp
+++ b/modules/m_sasl.cpp
@@ -150,7 +150,7 @@ class SASLService : public SASL::Service, public Timer
}
}
- Session* &session = sessions[m.source];
+ Session* session = GetSession(m.source);
if (m.type == "S")
{
@@ -178,18 +178,22 @@ class SASLService : public SASL::Service, public Timer
{
session->hostname = hostname;
session->ip = ip;
+
+ sessions[m.source] = session;
}
}
else if (m.type == "D")
{
delete session;
- sessions.erase(m.source);
return;
}
else if (m.type == "H")
{
if (!session)
+ {
session = new Session(NULL, m.source);
+ sessions[m.source] = session;
+ }
session->hostname = m.data;
session->ip = m.ext;
}