]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Allow normal MODE from a server prefix
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 12 Nov 2006 15:41:43 +0000 (15:41 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 12 Nov 2006 15:41:43 +0000 (15:41 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5704 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_spanningtree.cpp

index 0da9330008ed32087692d9e3921b98c629dd94df..80b5cc5042c795c0f5020c73a9c3053df72b86dc 100644 (file)
@@ -3429,6 +3429,22 @@ class TreeSocket : public InspSocket
                                        {
                                                sourceserv = this->InboundServerName;
                                        }
+                                       if ((!who) && (command == "MODE"))
+                                       {
+                                               if (Utils->IsServer(prefix))
+                                               {
+                                                       const char* modelist[127];
+                                                       for (size_t i = 0; i < params.size(); i++)
+                                                               modelist[i] = params[i].c_str();
+
+                                                       userrec* fake = new userrec(Instance);
+                                                       fake->SetFd(FD_MAGIC_NUMBER);
+
+                                                       this->Instance->SendMode(modelist, params.size(), fake);
+       
+                                                       delete fake;
+                                               }
+                                       }
                                        if (who)
                                        {
                                                if ((command == "NICK") && (params.size() > 0))
@@ -5138,6 +5154,13 @@ class ModuleSpanningTree : public Module
                        params->insert(params->begin() + 1,ConvToStr(ourTS));
                        Utils->DoOneToMany(ServerInstance->Config->ServerName,"FMODE",*params);
                }
+               else if (event->GetEventID() == "send_mode_explicit")
+               {
+                       if (params->size() < 2)
+                               return;
+                       // Insert the TS value of the object, either userrec or chanrec
+                       Utils->DoOneToMany(ServerInstance->Config->ServerName,"MODE",*params);
+               }
                else if (event->GetEventID() == "send_push")
                {
                        if (params->size() < 2)