]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/rconnect.cpp
Remove trailing whitespace from various source files.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / rconnect.cpp
index d4254cac67f951a3cb20e1551a5f206a2c38437d..7779355e29d56a72dac76b373b657aa09910ec2b 100644 (file)
 
 
 #include "inspircd.h"
-#include "socket.h"
-#include "xline.h"
 
-#include "resolvers.h"
 #include "main.h"
 #include "utils.h"
-#include "treeserver.h"
-#include "link.h"
-#include "treesocket.h"
 #include "commands.h"
 
-CommandRConnect::CommandRConnect (Module* Creator, SpanningTreeUtilities* Util)
-       : Command(Creator, "RCONNECT", 2), Utils(Util)
+CommandRConnect::CommandRConnect (Module* Creator)
+       : Command(Creator, "RCONNECT", 2)
 {
        flags_needed = 'o';
        syntax = "<remote-server-mask> <target-server-mask>";
 }
 
-CmdResult CommandRConnect::Handle (const std::vector<std::string>& parameters, User *user)
+CmdResult CommandRConnect::Handle(User* user, const Params& parameters)
 {
-       if (IS_LOCAL(user))
+       /* First see if the server which is being asked to connect to another server in fact exists */
+       if (!Utils->FindServerMask(parameters[0]))
        {
-               if (!Utils->FindServerMask(parameters[0]))
-               {
-                       user->WriteServ("NOTICE %s :*** RCONNECT: Server \002%s\002 isn't connected to the network!", user->nick.c_str(), parameters[0].c_str());
-                       return CMD_FAILURE;
-               }
-               user->WriteServ("NOTICE %s :*** RCONNECT: Sending remote connect to \002%s\002 to connect server \002%s\002.",user->nick.c_str(),parameters[0].c_str(),parameters[1].c_str());
+               user->WriteRemoteNotice(InspIRCd::Format("*** RCONNECT: Server \002%s\002 isn't connected to the network!", parameters[0].c_str()));
+               return CMD_FAILURE;
        }
 
        /* Is this aimed at our server? */
@@ -54,14 +45,29 @@ CmdResult CommandRConnect::Handle (const std::vector<std::string>& parameters, U
        {
                /* Yes, initiate the given connect */
                ServerInstance->SNO->WriteToSnoMask('l',"Remote CONNECT from %s matching \002%s\002, connecting server \002%s\002",user->nick.c_str(),parameters[0].c_str(),parameters[1].c_str());
-               std::vector<std::string> para;
+               CommandBase::Params para;
                para.push_back(parameters[1]);
                ((ModuleSpanningTree*)(Module*)creator)->HandleConnect(para, user);
        }
+       else
+       {
+               /* It's not aimed at our server, but if the request originates from our user
+                * acknowledge that we sent the request.
+                *
+                * It's possible that we're asking a server for something that makes no sense
+                * (e.g. connect to itself or to an already connected server), but we don't check
+                * for those conditions here, as ModuleSpanningTree::HandleConnect() (which will run
+                * on the target) does all the checking and error reporting.
+                */
+               if (IS_LOCAL(user))
+               {
+                       user->WriteNotice("*** RCONNECT: Sending remote connect to \002 " + parameters[0] + "\002 to connect server \002" + parameters[1] + "\002.");
+               }
+       }
        return CMD_SUCCESS;
 }
 
-RouteDescriptor CommandRConnect::GetRouting(User* user, const std::vector<std::string>& parameters)
+RouteDescriptor CommandRConnect::GetRouting(User* user, const Params& parameters)
 {
        return ROUTE_UNICAST(parameters[0]);
 }