]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix empty FMODE being sent if SendMode mode changes
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 28 Jan 2010 20:16:31 +0000 (20:16 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 28 Jan 2010 20:16:31 +0000 (20:16 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12323 e03df62e-2008-0410-955e-edbf42e46eb7

include/inspircd.h
src/modules.cpp
src/modules/m_channames.cpp
src/modules/m_cloaking.cpp
src/modules/m_devoice.cpp
src/modules/m_messageflood.cpp
src/modules/m_ojoin.cpp
src/modules/m_opermodes.cpp
src/modules/m_timedbans.cpp

index 44e6abe57791ca41cea8da10be8abc08d5101519..25ba846bcad1e9762d2f77d885d41fcb722d667a 100644 (file)
@@ -612,6 +612,14 @@ class CoreExport InspIRCd
         */
        void SendMode(const std::vector<std::string>& parameters, User *user);
 
+       /** Send a modechange and route it to the network.
+        * The parameters provided are identical to that sent to the
+        * handler for class cmd_mode.
+        * @param parameters The mode parameters
+        * @param user The user to send error messages to
+        */
+       void SendGlobalMode(const std::vector<std::string>& parameters, User *user);
+
        /** Match two strings using pattern matching, optionally, with a map
         * to check case against (may be NULL). If map is null, match will be case insensitive.
         * @param str The literal string to match against
index 529e88b07220e6aceb9e05573b9a3a904396a19a..58c27e4902d236f26d294899bd057eb500e4d6e6 100644 (file)
@@ -524,6 +524,14 @@ void InspIRCd::SendMode(const std::vector<std::string>& parameters, User *user)
        this->Modes->Process(parameters, user);
 }
 
+
+void InspIRCd::SendGlobalMode(const std::vector<std::string>& parameters, User *user)
+{
+       Modes->Process(parameters, user);
+       if (!Modes->GetLastParse().empty())
+               this->PI->SendMode(parameters[0], Modes->GetLastParseParams(), Modes->GetLastParseTranslate());
+}
+
 bool InspIRCd::AddResolver(Resolver* r, bool cached)
 {
        if (!cached)
index 01f176e3be0828dba779f26bada1aa306850f978..032e1104c880d2d8718d1055779d1ed7c3484ed8 100644 (file)
@@ -76,8 +76,7 @@ class ModuleChannelNames : public Module
                                modes.push_back(c->name);
                                modes.push_back("-P");
 
-                               ServerInstance->SendMode(modes, ServerInstance->FakeClient);
-                               ServerInstance->PI->SendMode(c->name, ServerInstance->Modes->GetLastParseParams(), ServerInstance->Modes->GetLastParseTranslate());
+                               ServerInstance->SendGlobalMode(modes, ServerInstance->FakeClient);
                        }
                        const UserMembList* users = c->GetUsers();
                        for(UserMembCIter j = users->begin(); j != users->end(); ++j)
index 1b30f410a427af041bddfd8208cd0106d5981530..0405e31dd2d93e530e656db0f47ed879504e7152 100644 (file)
@@ -438,9 +438,6 @@ class ModuleCloaking : public Module
                if (cloak)
                        return;
 
-               if (dest->host.find('.') == std::string::npos && dest->host.find(':') == std::string::npos)
-                       return;
-
                std::string ipstr = dest->GetIPString();
                std::string chost;
 
index 85906964826866889f81fa44d3689e6e3320f13e..c4387bdaaa6eee9c41996a35383bbb2a70e8c2ec 100644 (file)
@@ -41,8 +41,7 @@ class CommandDevoice : public Command
                        modes.push_back("-v");
                        modes.push_back(user->nick);
 
-                       ServerInstance->SendMode(modes, ServerInstance->FakeClient);
-                       ServerInstance->PI->SendMode(c->name, ServerInstance->Modes->GetLastParseParams(), ServerInstance->Modes->GetLastParseTranslate());
+                       ServerInstance->SendGlobalMode(modes, ServerInstance->FakeClient);
                        return CMD_SUCCESS;
                }
 
index 16ad1f2a44e54727fcc969e14454955e8be14cd3..c37537249960eefa11849f4479207bc5cedcb329 100644 (file)
@@ -215,9 +215,7 @@ class ModuleMsgFlood : public Module
                                        parameters.push_back(dest->name);
                                        parameters.push_back("+b");
                                        parameters.push_back(user->MakeWildHost());
-                                       ServerInstance->SendMode(parameters, ServerInstance->FakeClient);
-
-                                       ServerInstance->PI->SendModeStr(dest->name, std::string("+b ") + user->MakeWildHost());
+                                       ServerInstance->SendGlobalMode(parameters, ServerInstance->FakeClient);
                                }
 
                                char kickmessage[MAXBUF];
index 176a0e613e648259b9ea960080e7bf562a4d12b6..6e9e3681200304f4ee14384765727e9999931261 100644 (file)
@@ -83,8 +83,7 @@ class CommandOjoin : public Command
                        modes.push_back(parameters[0]);
                        modes.push_back("+Y");
                        modes.push_back(user->nick);
-                       ServerInstance->SendMode(modes, ServerInstance->FakeClient);
-                       ServerInstance->PI->SendMode(parameters[0], ServerInstance->Modes->GetLastParseParams(), ServerInstance->Modes->GetLastParseTranslate());
+                       ServerInstance->SendGlobalMode(modes, ServerInstance->FakeClient);
                }
                return CMD_SUCCESS;
        }
index 7cc4ecc86c024d66156ae3073253477e7acb7421..5cd2674a3d6e15b28e458efc1f0f5ab7456eaa55 100644 (file)
@@ -73,8 +73,7 @@ class ModuleModesOnOper : public Module
                        modes.push_back(tokens[k]);
                }
 
-               ServerInstance->SendMode(modes, u);
-               ServerInstance->PI->SendMode(u->uuid, ServerInstance->Modes->GetLastParseParams(), ServerInstance->Modes->GetLastParseTranslate());
+               ServerInstance->SendGlobalMode(modes, u);
        }
 };
 
index 91868e46e1459e7620823319a3f0aa4716dd85db..eaa5cd88e28ccd73ca8f84c2cfaf0099fef1700d 100644 (file)
@@ -169,8 +169,7 @@ class ModuleTimedBans : public Module
                                        cr->WriteAllExcept(ServerInstance->FakeClient, true, '@', empty, "NOTICE %s :%s", cr->name.c_str(), expiry.c_str());
                                        ServerInstance->PI->SendChannelNotice(cr, '@', expiry);
 
-                                       ServerInstance->SendMode(setban, ServerInstance->FakeClient);
-                                       ServerInstance->PI->SendMode(chan, ServerInstance->Modes->GetLastParseParams(), ServerInstance->Modes->GetLastParseTranslate());
+                                       ServerInstance->SendGlobalMode(setban, ServerInstance->FakeClient);
                                }
                        }
                        else