diff options
Diffstat (limited to 'modules/pseudoclients/nickserv.cpp')
-rw-r--r-- | modules/pseudoclients/nickserv.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index a7941fc51..c299c0da3 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -11,6 +11,9 @@ #include "module.h" +class NickServCollide; +static std::set<NickServCollide *> collides; + /** Timer for colliding nicks to force people off of nicknames */ class NickServCollide : public Timer @@ -23,6 +26,17 @@ class NickServCollide : public Timer public: NickServCollide(Module *me, NickServService *nss, User *user, NickAlias *nick, time_t delay) : Timer(me, delay), service(nss), u(user), ts(user->timestamp), na(nick) { + collides.insert(this); + } + + ~NickServCollide() + { + collides.erase(this); + } + + User *GetUser() + { + return u; } void Tick(time_t t) anope_override @@ -344,6 +358,16 @@ class NickServCore : public Module, public NickServService "Your privacy is respected; this e-mail won't be given to\n" "any third-party person."), Config->StrictPrivmsg.c_str(), NickServ->nick.c_str()); } + + for (std::set<NickServCollide *>::iterator it = collides.begin(); it != collides.end(); ++it) + { + NickServCollide *c = *it; + if (c->GetUser() == u) + { + delete c; + break; + } + } } void OnNickGroup(User *u, NickAlias *target) anope_override |