diff options
author | Adam <Adam@anope.org> | 2011-08-24 13:56:48 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-08-24 13:56:48 -0400 |
commit | 5d681a74ad8ab7c771e07673413801fd1c4f6e5b (patch) | |
tree | f46a0914d382c40820f00fc662e85bca98313f09 /src/nickserv.cpp | |
parent | 21a8bff0113204fa7e4f3257fdbaf851f006b748 (diff) |
Clear NS_HELD from nicks when recover expiry is up
Diffstat (limited to 'src/nickserv.cpp')
-rw-r--r-- | src/nickserv.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/nickserv.cpp b/src/nickserv.cpp index c88eab55f..ca5d3d48c 100644 --- a/src/nickserv.cpp +++ b/src/nickserv.cpp @@ -16,9 +16,11 @@ nickalias_map NickAliasList; nickcore_map NickCoreList; typedef std::map<Anope::string, NickServCollide *> nickservcollides_map; +typedef std::map<Anope::string, NickServHeld *> nickservheld_map; typedef std::map<Anope::string, NickServRelease *> nickservreleases_map; static nickservcollides_map NickServCollides; +static nickservheld_map NickServHelds; static nickservreleases_map NickServReleases; NickServCollide::NickServCollide(User *user, time_t delay) : Timer(delay), u(user), nick(u->nick) @@ -48,6 +50,26 @@ void NickServCollide::Tick(time_t ctime) u->Collide(na); } +NickServHeld::NickServHeld(NickAlias *n, long l) : Timer(l), na(n), nick(na->nick) +{ + nickservheld_map::iterator nit = NickServHelds.find(na->nick); + if (nit != NickServHelds.end()) + delete nit->second; + + NickServHelds[na->nick] = this; +} + +NickServHeld::~NickServHeld() +{ + NickServHelds.erase(this->nick); +} + +void NickServHeld::Tick(time_t) +{ + if (na) + na->UnsetFlag(NS_HELD); +} + NickServRelease::NickServRelease(NickAlias *na, time_t delay) : User(na->nick, Config->NSEnforcerUser, Config->NSEnforcerHost, ts6_uid_retrieve()), Timer(delay), nick(na->nick) { this->realname = "Services Enforcer"; |