]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/command_parse.cpp
Add new cross-module event system
[user/henk/code/inspircd.git] / src / command_parse.cpp
index eed549deb1e064593980d526685c347881df2c22..c93dac65fd386c05bff39ae57307c87dde5117e0 100644 (file)
@@ -40,7 +40,7 @@ bool InspIRCd::PassCompare(Extensible* ex, const std::string& data, const std::s
        if (!hashtype.empty() && hashtype != "plaintext")
                return false;
 
-       return (data == input);
+       return TimingSafeCompare(data, input);
 }
 
 bool CommandParser::LoopCall(User* user, Command* handler, const std::vector<std::string>& parameters, unsigned int splithere, int extra, bool usemax)
@@ -60,7 +60,7 @@ bool CommandParser::LoopCall(User* user, Command* handler, const std::vector<std
         *
         * Only check for duplicates if there is one list (allow them in JOIN).
         */
-       std::set<irc::string> dupes;
+       insp::flat_set<irc::string> dupes;
        bool check_dupes = (extra < 0);
 
        /* Create two sepstreams, if we have only one list, then initialize the second sepstream with
@@ -327,10 +327,38 @@ void CommandParser::RemoveCommand(Command* x)
                cmdlist.erase(n);
 }
 
+CommandBase::CommandBase(Module* mod, const std::string& cmd, unsigned int minpara, unsigned int maxpara)
+       : ServiceProvider(mod, cmd, SERVICE_COMMAND)
+       , flags_needed(0)
+       , min_params(minpara)
+       , max_params(maxpara)
+       , use_count(0)
+       , disabled(false)
+       , works_before_reg(false)
+       , allow_empty_last_param(true)
+       , Penalty(1)
+{
+}
+
 CommandBase::~CommandBase()
 {
 }
 
+void CommandBase::EncodeParameter(std::string& parameter, int index)
+{
+}
+
+RouteDescriptor CommandBase::GetRouting(User* user, const std::vector<std::string>& parameters)
+{
+       return ROUTE_LOCALONLY;
+}
+
+Command::Command(Module* mod, const std::string& cmd, unsigned int minpara, unsigned int maxpara)
+       : CommandBase(mod, cmd, minpara, maxpara)
+       , force_manual_route(false)
+{
+}
+
 Command::~Command()
 {
        ServerInstance->Parser.RemoveCommand(this);