]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cap.cpp
Move message parsing to ProcessBuffer and fix edge cases in it.
[user/henk/code/inspircd.git] / src / modules / m_cap.cpp
index 868294fe4d6fb436a2a3189231e7bfc70bae026f..80e70d3e57470d89ba883edde2ada430d47d55bd 100644 (file)
 #include "modules/reload.h"
 #include "modules/cap.h"
 
+enum
+{
+       // From IRCv3 capability-negotiation-3.1.
+       ERR_INVALIDCAPCMD = 410
+};
+
 namespace Cap
 {
        class ManagerImpl;
@@ -359,7 +365,7 @@ class CommandCap : public SplitCommand
                works_before_reg = true;
        }
 
-       CmdResult HandleLocal(const std::vector<std::string>& parameters, LocalUser* user) CXX11_OVERRIDE
+       CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE
        {
                if (user->registered != REG_ALL)
                        holdext.set(user, 1);
@@ -399,7 +405,7 @@ class CommandCap : public SplitCommand
                }
                else
                {
-                       user->WriteNumeric(ERR_INVALIDCAPSUBCOMMAND, subcommand, "Invalid CAP subcommand");
+                       user->WriteNumeric(ERR_INVALIDCAPCMD, subcommand.empty() ? "*" : subcommand, "Invalid CAP subcommand");
                        return CMD_FAILURE;
                }