summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-05-28 21:07:07 -0400
committerAdam <Adam@anope.org>2013-05-28 21:07:07 -0400
commit576aaff3da727c1a929c28ff0fab064eba4826e4 (patch)
tree833d6eb0d2f84b278c70fdc75cf1a2f2ec473b77
parentc5bc8fab324480863d93bdba1ab6ba5124e28666 (diff)
Don't compare system time to a users timestamp to determine when to collide with a user, if the time on services vs the ircd are different it does weird things
-rw-r--r--modules/pseudoclients/nickserv.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp
index 2e80211b0..04aabbc4f 100644
--- a/modules/pseudoclients/nickserv.cpp
+++ b/modules/pseudoclients/nickserv.cpp
@@ -17,10 +17,11 @@ class NickServCollide : public Timer
{
NickServService *service;
Reference<User> u;
+ time_t ts;
Reference<NickAlias> na;
public:
- NickServCollide(NickServService *nss, User *user, NickAlias *nick, time_t delay) : Timer(delay), service(nss), u(user), na(nick)
+ NickServCollide(NickServService *nss, User *user, NickAlias *nick, time_t delay) : Timer(delay), service(nss), u(user), ts(user->timestamp), na(nick)
{
}
@@ -29,7 +30,7 @@ class NickServCollide : public Timer
if (!u || !na)
return;
/* If they identified or don't exist anymore, don't kill them. */
- if (u->Account() == na->nc || u->timestamp > this->GetSetTime())
+ if (u->Account() == na->nc || u->timestamp > ts)
return;
service->Collide(u, na);
@@ -56,7 +57,7 @@ class NickServHeld : public Timer
/** Timer for releasing nicks to be available for use
*/
-class CoreExport NickServRelease : public User, public Timer
+class NickServRelease : public User, public Timer
{
static std::map<Anope::string, NickServRelease *> NickServReleases;
Anope::string nick;