diff options
| author | 2010-01-02 21:05:56 +0000 | |
|---|---|---|
| committer | 2010-01-02 21:05:56 +0000 | |
| commit | e2289d4cf4f9a9c587c1956c089bb3a32a48b54d (patch) | |
| tree | 5cccf646ce53a04204ea98cfca87db0dec436092 /src/modules/m_spanningtree/svsnick.cpp | |
| parent | Hook 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.cpp | 52 |
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 ¶ms) +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; +} |
