summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-08-30 05:20:09 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-08-30 05:20:09 +0000
commit1348ef100ea092c8e7fa3cd395b6b81023a2177f (patch)
tree35d736d17ec1b3104a4b5c57a1d17cf5e98b1c03
parentbcffb94eaa52b53678cbbba2bbdbc004f8394e87 (diff)
Properly keep track of services enforcer clients internally, they should now quit when theyre supposed to!
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2483 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--src/nickserv.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/nickserv.c b/src/nickserv.c
index 3cd25e671..5af6833fc 100644
--- a/src/nickserv.c
+++ b/src/nickserv.c
@@ -41,10 +41,16 @@ class NickServCollide : public Timer
{
public:
NickAlias *na;
+ std::map<NickAlias *, NickServCollide *>::iterator nit;
NickServCollide(NickAlias *nickalias, time_t delay) : Timer(delay), na(nickalias)
{
- NickServCollides.insert(std::make_pair(nickalias, this));
+ nit = NickServCollides.insert(std::make_pair(nickalias, this)).first;
+ }
+
+ ~NickServCollide()
+ {
+ NickServCollides.erase(nit);
}
void Tick(time_t ctime)
@@ -79,10 +85,16 @@ class NickServRelease : public Timer
public:
NickAlias *na;
std::string uid;
+ std::map<NickAlias *, NickServRelease *>::iterator nit;
NickServRelease(NickAlias *nickalias, time_t delay) : Timer(delay), na(nickalias)
{
- NickServReleases.insert(std::make_pair(nickalias, this));
+ nit = NickServReleases.insert(std::make_pair(nickalias, this)).first;
+ }
+
+ ~NickServRelease()
+ {
+ NickServReleases.erase(nit);
}
void Tick(time_t ctime)