summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/treeserver.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-08-27 21:09:46 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-08-27 21:09:46 +0000
commit07c58b6fb8da655a45d4d4d17dd6d518f60b00dd (patch)
treeccc25c7c98d79f527d090ef6c9d7d60e9bf9f981 /src/modules/m_spanningtree/treeserver.cpp
parent66d187fa55b4fdcb38ec987c269c4c1573a441b5 (diff)
This may need tidying up to make SetID internal and do this in the constructor, but for now it works.
AWOOGA AWOOGA WARNING: SetID can throw a CoreException if the id already exists! git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7919 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree/treeserver.cpp')
-rw-r--r--src/modules/m_spanningtree/treeserver.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp
index d252f2386..5f91e43b5 100644
--- a/src/modules/m_spanningtree/treeserver.cpp
+++ b/src/modules/m_spanningtree/treeserver.cpp
@@ -132,6 +132,11 @@ std::string& TreeServer::GetID()
void TreeServer::SetID(const std::string &id)
{
sid = id;
+ server_hash::iterator iter = Utils->sidlist.find(sid);
+ if (iter == Utils->sidlist.end())
+ Utils->sidlist[sid] = this;
+ else
+ throw CoreException("Server ID '"+id+"' already exists!");
}
int TreeServer::QuitUsers(const std::string &reason)
@@ -330,6 +335,10 @@ TreeServer::~TreeServer()
{
/* We'd better tidy up after ourselves, eh? */
this->DelHashEntry();
+
+ server_hash::iterator iter = Utils->sidlist.find(GetID());
+ if (iter != Utils->sidlist.end())
+ Utils->sidlist.erase(iter);
}