]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/utils.cpp
Merge pull request #1359 from genius3000/insp20+sasl_no_server
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / utils.cpp
index 8b078220c97bafb37ef97b4a2519e060e14b4048..367a3b921a88da46f5d7477c2c8ea17a004a60ac 100644 (file)
@@ -202,7 +202,7 @@ void SpanningTreeUtilities::GetListOfServersForChannel(Channel* c, TreeServerLis
        return;
 }
 
-bool SpanningTreeUtilities::DoOneToAllButSender(const std::string &prefix, const std::string &command, const parameterlist &params, std::string omit)
+bool SpanningTreeUtilities::DoOneToAllButSender(const std::string &prefix, const std::string &command, const parameterlist &params, const std::string& omit)
 {
        TreeServer* omitroute = this->BestRouteTo(omit);
        std::string FullLine = ":" + prefix + " " + command;
@@ -251,21 +251,7 @@ bool SpanningTreeUtilities::DoOneToMany(const std::string &prefix, const std::st
        return true;
 }
 
-bool SpanningTreeUtilities::DoOneToMany(const char* prefix, const char* command, const parameterlist &params)
-{
-       std::string spfx = prefix;
-       std::string scmd = command;
-       return this->DoOneToMany(spfx, scmd, params);
-}
-
-bool SpanningTreeUtilities::DoOneToAllButSender(const char* prefix, const char* command, const parameterlist &params, std::string omit)
-{
-       std::string spfx = prefix;
-       std::string scmd = command;
-       return this->DoOneToAllButSender(spfx, scmd, params, omit);
-}
-
-bool SpanningTreeUtilities::DoOneToOne(const std::string &prefix, const std::string &command, const parameterlist &params, std::string target)
+bool SpanningTreeUtilities::DoOneToOne(const std::string &prefix, const std::string &command, const parameterlist &params, const std::string& target)
 {
        TreeServer* Route = this->BestRouteTo(target);
        if (Route)
@@ -314,7 +300,7 @@ void SpanningTreeUtilities::RefreshIPCache()
                {
                        try
                        {
-                               bool cached;
+                               bool cached = false;
                                SecurityIPResolver* sr = new SecurityIPResolver(Creator, this, L->IPAddr, L, cached, DNS_QUERY_AAAA);
                                ServerInstance->AddResolver(sr, cached);
                        }
@@ -327,16 +313,16 @@ void SpanningTreeUtilities::RefreshIPCache()
 
 void SpanningTreeUtilities::ReadConfiguration()
 {
-       ConfigReader Conf;
-
-       FlatLinks = Conf.ReadFlag("security","flatlinks",0);
-       HideULines = Conf.ReadFlag("security","hideulines",0);
-       AnnounceTSChange = Conf.ReadFlag("options","announcets",0);
-       AllowOptCommon = Conf.ReadFlag("options", "allowmismatch", 0);
-       ChallengeResponse = !Conf.ReadFlag("security", "disablehmac", 0);
-       quiet_bursts = Conf.ReadFlag("performance", "quietbursts", 0);
-       PingWarnTime = Conf.ReadInteger("options", "pingwarning", 0, true);
-       PingFreq = Conf.ReadInteger("options", "serverpingfreq", 0, true);
+       ConfigTag* security = ServerInstance->Config->ConfValue("security");
+       ConfigTag* options = ServerInstance->Config->ConfValue("options");
+       FlatLinks = security->getBool("flatlinks");
+       HideULines = security->getBool("hideulines");
+       AnnounceTSChange = options->getBool("announcets");
+       AllowOptCommon = options->getBool("allowmismatch");
+       ChallengeResponse = !security->getBool("disablehmac");
+       quiet_bursts = ServerInstance->Config->ConfValue("performance")->getBool("quietbursts");
+       PingWarnTime = options->getInt("pingwarning");
+       PingFreq = options->getInt("serverpingfreq");
 
        if (PingFreq == 0)
                PingFreq = 60;
@@ -435,10 +421,23 @@ Link* SpanningTreeUtilities::FindLink(const std::string& name)
        for (std::vector<reference<Link> >::iterator i = LinkBlocks.begin(); i != LinkBlocks.end(); ++i)
        {
                Link* x = *i;
-               if (InspIRCd::Match(x->Name.c_str(), name.c_str()))
+               if (InspIRCd::Match(x->Name.c_str(), name.c_str(), rfc_case_insensitive_map))
                {
                        return x;
                }
        }
        return NULL;
 }
+
+void SpanningTreeUtilities::Rehash()
+{
+       server_hash temp;
+       for (server_hash::const_iterator i = serverlist.begin(); i != serverlist.end(); ++i)
+               temp.insert(std::make_pair(i->first, i->second));
+       serverlist.swap(temp);
+       temp.clear();
+
+       for (server_hash::const_iterator i = sidlist.begin(); i != sidlist.end(); ++i)
+               temp.insert(std::make_pair(i->first, i->second));
+       sidlist.swap(temp);
+}