aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/svsnick.cpp
diff options
context:
space:
mode:
authorGravatar danieldg2010-01-02 21:05:56 +0000
committerGravatar danieldg2010-01-02 21:05:56 +0000
commite2289d4cf4f9a9c587c1956c089bb3a32a48b54d (patch)
tree5cccf646ce53a04204ea98cfca87db0dec436092 /src/modules/m_spanningtree/svsnick.cpp
parentHook OnUserRegister instead of OnUserConnect so that remote user connection i... (diff)
Remove special-case handling of SVSNICK, SVSJOIN, SVSPART; enables intelligent routing
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12238 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree/svsnick.cpp')
-rw-r--r--src/modules/m_spanningtree/svsnick.cpp52
1 files changed, 21 insertions, 31 deletions
diff --git a/src/modules/m_spanningtree/svsnick.cpp b/src/modules/m_spanningtree/svsnick.cpp
index 87b63ec26..742a8e4fb 100644
--- a/src/modules/m_spanningtree/svsnick.cpp
+++ b/src/modules/m_spanningtree/svsnick.cpp
@@ -12,50 +12,40 @@
*/
#include "inspircd.h"
-#include "socket.h"
-#include "xline.h"
-#include "socketengine.h"
#include "main.h"
#include "utils.h"
-#include "treeserver.h"
-#include "treesocket.h"
+#include "commands.h"
-/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-
-/** Because Andy insists that services-compatible servers must
- * implement SVSNICK and SVSJOIN, that's exactly what we do :p
- */
-bool TreeSocket::SVSNick(const std::string &prefix, parameterlist &params)
+CmdResult CommandSVSNick::Handle(const std::vector<std::string>& parameters, User *user)
{
- if (params.size() < 3)
- return true;
-
- User* u = ServerInstance->FindNick(params[0]);
+ User* u = ServerInstance->FindNick(parameters[0]);
- if (u)
+ if (u && IS_LOCAL(u))
{
- Utils->DoOneToAllButSender(prefix,"SVSNICK",params,prefix);
+ parameterlist par;
+ par.push_back(parameters[1]);
- if (IS_LOCAL(u))
+ if (!u->ForceNickChange(parameters[1].c_str()))
{
- parameterlist par;
- par.push_back(params[1]);
-
- if (!u->ForceNickChange(params[1].c_str()))
+ /* buh. UID them */
+ if (!u->ForceNickChange(u->uuid.c_str()))
{
- /* buh. UID them */
- if (!u->ForceNickChange(u->uuid.c_str()))
- {
- ServerInstance->Users->QuitUser(u, "Nickname collision");
- return true;
- }
+ ServerInstance->Users->QuitUser(u, "Nickname collision");
+ return CMD_SUCCESS;
}
-
- u->age = atoi(params[2].c_str());
}
+
+ u->age = atoi(parameters[2].c_str());
}
- return true;
+ return CMD_SUCCESS;
}
+RouteDescriptor CommandSVSNick::GetRouting(User* user, const std::vector<std::string>& parameters)
+{
+ User* u = ServerInstance->FindNick(parameters[0]);
+ if (u)
+ return ROUTE_OPT_UCAST(u->server);
+ return ROUTE_LOCALONLY;
+}