From 576aaff3da727c1a929c28ff0fab064eba4826e4 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 28 May 2013 21:07:07 -0400 Subject: [PATCH] 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 --- modules/pseudoclients/nickserv.cpp | 7 ++++--- 1 file 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 u; + time_t ts; Reference 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 NickServReleases; Anope::string nick;