]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/utils.cpp
Broadcast the limits for list modes on server link.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / utils.cpp
index 8099636251e065648b3167e4fe3cd16371010b1e..84d96e098d3f6025c85f9d8e6d240504ee5ae13f 100644 (file)
@@ -25,6 +25,7 @@
 
 
 #include "inspircd.h"
+#include "listmode.h"
 
 #include "main.h"
 #include "utils.h"
@@ -374,3 +375,24 @@ void SpanningTreeUtilities::SendChannelMessage(User* source, Channel* target, co
                        Sock->WriteLine(msg);
        }
 }
+
+void SpanningTreeUtilities::SendListLimits(Channel* chan, TreeSocket* sock)
+{
+       std::stringstream buffer;
+       const ModeParser::ListModeList& listmodes = ServerInstance->Modes->GetListModes();
+       for (ModeParser::ListModeList::const_iterator i = listmodes.begin(); i != listmodes.end(); ++i)
+       {
+               ListModeBase* lm = *i;
+               buffer << lm->GetModeChar() << " " << lm->GetLimit(chan) << " ";
+       }
+
+       std::string bufferstr = buffer.str();
+       if (bufferstr.empty())
+               return; // Should never happen.
+
+       bufferstr.erase(bufferstr.end() - 1);
+       if (sock)
+               sock->WriteLine(CommandMetadata::Builder(chan, "maxlist", bufferstr));
+       else
+               CommandMetadata::Builder(chan, "maxlist", bufferstr).Broadcast();
+}