]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cap.cpp
Unite SSL service providers and SSL profile classes
[user/henk/code/inspircd.git] / src / modules / m_cap.cpp
index f74f27f1618ad4b772ffa91d3b1ff86347837589..86de15d9559f0dbebddfac1a78d4a73ddc776632 100644 (file)
@@ -55,7 +55,8 @@ class Cap::ManagerImpl : public Cap::Manager, public ReloadModule::EventListener
 
        static bool CanRequest(LocalUser* user, Ext usercaps, Capability* cap, bool adding)
        {
-               if ((usercaps & cap->GetMask()) == adding)
+               const bool hascap = ((usercaps & cap->GetMask()) != 0);
+               if (hascap == adding)
                        return true;
 
                return cap->OnRequest(user, adding);
@@ -194,7 +195,7 @@ class Cap::ManagerImpl : public Cap::Manager, public ReloadModule::EventListener
                        cap->set(user, false);
                }
 
-               ServerInstance->Modules.DelReferent(cap);               
+               ServerInstance->Modules.DelReferent(cap);
                cap->Unregister();
                caps.erase(cap->GetName());
        }
@@ -398,7 +399,7 @@ class CommandCap : public SplitCommand
                }
                else
                {
-                       user->WriteNumeric(ERR_INVALIDCAPSUBCOMMAND, "%s :Invalid CAP subcommand", subcommand.c_str());
+                       user->WriteNumeric(ERR_INVALIDCAPSUBCOMMAND, subcommand.empty() ? "*" : subcommand, "Invalid CAP subcommand");
                        return CMD_FAILURE;
                }