From b1173ca66a3a3dc3d1ae0b3f305e1b37e3d5c982 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 3 Mar 2014 15:07:17 +0100 Subject: Update nick timestamps in User::ChangeNick(), pass the new TS in a parameter --- src/modules/m_spanningtree/main.cpp | 7 +------ src/modules/m_spanningtree/nick.cpp | 6 +++--- src/modules/m_spanningtree/svsnick.cpp | 3 +-- 3 files changed, 5 insertions(+), 11 deletions(-) (limited to 'src/modules/m_spanningtree') diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 1782f7e2a..43a3ec2cc 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -583,14 +583,9 @@ void ModuleSpanningTree::OnUserPostNick(User* user, const std::string &oldnick) { if (IS_LOCAL(user)) { + // The nick TS is updated by the core, we don't do it CmdBuilder params(user, "NICK"); params.push_back(user->nick); - - /** IMPORTANT: We don't update the TS if the oldnick is just a case change of the newnick! - */ - if ((irc::string(user->nick.c_str()) != assign(oldnick)) && (!this->KeepNickTS)) - user->age = ServerInstance->Time(); - params.push_back(ConvToStr(user->age)); params.Broadcast(); this->KeepNickTS = false; diff --git a/src/modules/m_spanningtree/nick.cpp b/src/modules/m_spanningtree/nick.cpp index eb6c9396f..49ce9a767 100644 --- a/src/modules/m_spanningtree/nick.cpp +++ b/src/modules/m_spanningtree/nick.cpp @@ -36,7 +36,7 @@ CmdResult CommandNick::HandleRemote(RemoteUser* user, std::vector& return CMD_INVALID; /* Update timestamp on user when they change nicks */ - user->age = ConvToInt(params[1]); + const time_t newts = ConvToInt(params[1]); /* * On nick messages, check that the nick doesn't already exist here. @@ -46,7 +46,7 @@ CmdResult CommandNick::HandleRemote(RemoteUser* user, std::vector& if ((x) && (x != user)) { /* x is local, who is remote */ - int collideret = Utils->DoCollision(x, TreeServer::Get(user), user->age, user->ident, user->GetIPString(), user->uuid); + int collideret = Utils->DoCollision(x, TreeServer::Get(user), newts, user->ident, user->GetIPString(), user->uuid); if (collideret != 1) { /* @@ -57,6 +57,6 @@ CmdResult CommandNick::HandleRemote(RemoteUser* user, std::vector& return CMD_FAILURE; } } - user->ForceNickChange(params[0]); + user->ForceNickChange(params[0], newts); return CMD_SUCCESS; } diff --git a/src/modules/m_spanningtree/svsnick.cpp b/src/modules/m_spanningtree/svsnick.cpp index b3480eb55..01b83dc2c 100644 --- a/src/modules/m_spanningtree/svsnick.cpp +++ b/src/modules/m_spanningtree/svsnick.cpp @@ -43,9 +43,8 @@ CmdResult CommandSVSNick::Handle(User* user, std::vector& parameter ModuleSpanningTree* st = (ModuleSpanningTree*)(Module*)creator; st->KeepNickTS = true; - u->age = NickTS; - if (!u->ForceNickChange(nick)) + if (!u->ForceNickChange(nick, NickTS)) { /* buh. UID them */ if (!u->ForceNickChange(u->uuid)) -- cgit v1.2.3