aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_spanningtree/svsnick.cpp
diff options
context:
space:
mode:
authorGravatar Attila Molnar2014-01-21 18:44:08 +0100
committerGravatar Attila Molnar2014-01-21 18:44:08 +0100
commite244cb2c63b1ac1d85bdbb4691f7b1bd940ae804 (patch)
tree5a69b0efe6c0b7ab88925d3d066271ec40845e23 /src/modules/m_spanningtree/svsnick.cpp
parentm_spanningtree Fix routing of ROUTE_TYPE_MESSAGE messages (diff)
parentRelease 2.0.15 (diff)
Merge insp20
Diffstat (limited to 'src/modules/m_spanningtree/svsnick.cpp')
-rw-r--r--src/modules/m_spanningtree/svsnick.cpp16
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;