diff options
author | Attila Molnar <attilamolnar@hush.com> | 2014-03-03 15:07:17 +0100 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2014-03-03 15:07:17 +0100 |
commit | b1173ca66a3a3dc3d1ae0b3f305e1b37e3d5c982 (patch) | |
tree | 66fd0557af47b1e6282f942830766f6a96ec87b6 /src/modules/m_spanningtree | |
parent | a5ca8b892c384d5926bf03353ef878023f0f573d (diff) |
Update nick timestamps in User::ChangeNick(), pass the new TS in a parameter
Diffstat (limited to 'src/modules/m_spanningtree')
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 7 | ||||
-rw-r--r-- | src/modules/m_spanningtree/nick.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_spanningtree/svsnick.cpp | 3 |
3 files changed, 5 insertions, 11 deletions
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<std::string>& 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<std::string>& 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<std::string>& 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<std::string>& 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)) |