diff options
| author | 2014-01-21 18:44:08 +0100 | |
|---|---|---|
| committer | 2014-01-21 18:44:08 +0100 | |
| commit | e244cb2c63b1ac1d85bdbb4691f7b1bd940ae804 (patch) | |
| tree | 5a69b0efe6c0b7ab88925d3d066271ec40845e23 /src/modules/m_spanningtree/svsnick.cpp | |
| parent | m_spanningtree Fix routing of ROUTE_TYPE_MESSAGE messages (diff) | |
| parent | Release 2.0.15 (diff) | |
Merge insp20
Diffstat (limited to 'src/modules/m_spanningtree/svsnick.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/svsnick.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/modules/m_spanningtree/svsnick.cpp b/src/modules/m_spanningtree/svsnick.cpp index a504afbd7..b3480eb55 100644 --- a/src/modules/m_spanningtree/svsnick.cpp +++ b/src/modules/m_spanningtree/svsnick.cpp @@ -20,6 +20,7 @@ #include "inspircd.h" +#include "main.h" #include "commands.h" CmdResult CommandSVSNick::Handle(User* user, std::vector<std::string>& parameters) @@ -32,17 +33,28 @@ CmdResult CommandSVSNick::Handle(User* user, std::vector<std::string>& parameter if (isdigit(nick[0])) nick = u->uuid; + // Don't update the TS if the nick is exactly the same + if (u->nick == nick) + return CMD_FAILURE; + + time_t NickTS = ConvToInt(parameters[2]); + if (NickTS <= 0) + return CMD_FAILURE; + + ModuleSpanningTree* st = (ModuleSpanningTree*)(Module*)creator; + st->KeepNickTS = true; + u->age = NickTS; + if (!u->ForceNickChange(nick)) { /* buh. UID them */ if (!u->ForceNickChange(u->uuid)) { ServerInstance->Users->QuitUser(u, "Nickname collision"); - return CMD_SUCCESS; } } - u->age = ConvToInt(parameters[2]); + st->KeepNickTS = false; } return CMD_SUCCESS; |
