]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/configreader.cpp
Fix off by one in ping timeout.
[user/henk/code/inspircd.git] / src / configreader.cpp
index 12670b446b7ffe6caa1572ea8beb2019d08ffede..a922543a38ced7ab71137d8c1ef145e6fabcb35d 100644 (file)
@@ -36,7 +36,6 @@ ServerConfig::ServerConfig()
        dns_timeout = 5;
        MaxTargets = 20;
        NetBufferSize = 10240;
-       SoftLimit = SocketEngine::GetMaxFds();
        MaxConn = SOMAXCONN;
        MaxChans = 20;
        OperMaxChans = 30;
@@ -70,17 +69,16 @@ bool ServerConfig::ApplyDisabledCommands(const std::string& data)
        std::string thiscmd;
 
        /* Enable everything first */
-       for (Commandtable::iterator x = ServerInstance->Parser->cmdlist.begin(); x != ServerInstance->Parser->cmdlist.end(); x++)
+       const CommandParser::CommandMap& commands = ServerInstance->Parser.GetCommands();
+       for (CommandParser::CommandMap::const_iterator x = commands.begin(); x != commands.end(); ++x)
                x->second->Disable(false);
 
        /* Now disable all the ones which the user wants disabled */
        while (dcmds >> thiscmd)
        {
-               Commandtable::iterator cm = ServerInstance->Parser->cmdlist.find(thiscmd);
-               if (cm != ServerInstance->Parser->cmdlist.end())
-               {
-                       cm->second->Disable(true);
-               }
+               Command* handler = ServerInstance->Parser.GetHandler(thiscmd);
+               if (handler)
+                       handler->Disable(true);
        }
        return true;
 }
@@ -176,7 +174,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current)
                for(ClassVector::iterator i = current->Classes.begin(); i != current->Classes.end(); ++i)
                {
                        ConnectClass* c = *i;
-                       if (c->name.substr(0, 8) != "unnamed-")
+                       if (c->name.compare(0, 8, "unnamed-", 8))
                        {
                                oldBlocksByMask["n" + c->name] = c;
                        }
@@ -366,24 +364,12 @@ void ServerConfig::Fill()
                if (!nsid.empty() && nsid != sid)
                        throw CoreException("You must restart to change the server id");
        }
-       diepass = ConfValue("power")->getString("diepass");
-       restartpass = ConfValue("power")->getString("restartpass");
-       powerhash = ConfValue("power")->getString("hash");
-       PrefixQuit = options->getString("prefixquit");
-       SuffixQuit = options->getString("suffixquit");
-       FixedQuit = options->getString("fixedquit");
-       PrefixPart = options->getString("prefixpart");
-       SuffixPart = options->getString("suffixpart");
-       FixedPart = options->getString("fixedpart");
-       SoftLimit = ConfValue("performance")->getInt("softlimit", SocketEngine::GetMaxFds(), 10, SocketEngine::GetMaxFds());
+       SoftLimit = ConfValue("performance")->getInt("softlimit", (SocketEngine::GetMaxFds() > 0 ? SocketEngine::GetMaxFds() : LONG_MAX), 10);
        CCOnConnect = ConfValue("performance")->getBool("clonesonconnect", true);
        MaxConn = ConfValue("performance")->getInt("somaxconn", SOMAXCONN);
        XLineMessage = options->getString("xlinemessage", options->getString("moronbanner", "You're banned!"));
        ServerDesc = ConfValue("server")->getString("description", "Configure Me");
        Network = ConfValue("server")->getString("network", "Network");
-       AdminName = ConfValue("admin")->getString("name", "");
-       AdminEmail = ConfValue("admin")->getString("email", "null@example.com");
-       AdminNick = ConfValue("admin")->getString("nick", "admin");
        NetBufferSize = ConfValue("performance")->getInt("netbuffersize", 10240, 1024, 65534);
        dns_timeout = ConfValue("dns")->getInt("timeout", 5);
        DisabledCommands = ConfValue("disabled")->getString("commands", "");
@@ -404,23 +390,24 @@ void ServerConfig::Fill()
        DefaultModes = options->getString("defaultmodes", "not");
        PID = ConfValue("pid")->getString("file");
        MaxChans = ConfValue("channels")->getInt("users", 20);
-       OperMaxChans = ConfValue("channels")->getInt("opers", 60);
+       OperMaxChans = ConfValue("channels")->getInt("opers");
        c_ipv4_range = ConfValue("cidr")->getInt("ipv4clone", 32);
        c_ipv6_range = ConfValue("cidr")->getInt("ipv6clone", 128);
        Limits.NickMax = ConfValue("limits")->getInt("maxnick", 32);
        Limits.ChanMax = ConfValue("limits")->getInt("maxchan", 64);
        Limits.MaxModes = ConfValue("limits")->getInt("maxmodes", 20);
        Limits.IdentMax = ConfValue("limits")->getInt("maxident", 11);
+       Limits.MaxHost = ConfValue("limits")->getInt("maxhost", 64);
        Limits.MaxQuit = ConfValue("limits")->getInt("maxquit", 255);
        Limits.MaxTopic = ConfValue("limits")->getInt("maxtopic", 307);
        Limits.MaxKick = ConfValue("limits")->getInt("maxkick", 255);
        Limits.MaxGecos = ConfValue("limits")->getInt("maxgecos", 128);
        Limits.MaxAway = ConfValue("limits")->getInt("maxaway", 200);
        Limits.MaxLine = ConfValue("limits")->getInt("maxline", 512);
-       Paths.Config = ConfValue("path")->getString("configdir", CONFIG_PATH);
-       Paths.Data = ConfValue("path")->getString("datadir", DATA_PATH);
-       Paths.Log = ConfValue("path")->getString("logdir", LOG_PATH);
-       Paths.Module = ConfValue("path")->getString("moduledir", MOD_PATH);
+       Paths.Config = ConfValue("path")->getString("configdir", INSPIRCD_CONFIG_PATH);
+       Paths.Data = ConfValue("path")->getString("datadir", INSPIRCD_DATA_PATH);
+       Paths.Log = ConfValue("path")->getString("logdir", INSPIRCD_LOG_PATH);
+       Paths.Module = ConfValue("path")->getString("moduledir", INSPIRCD_MODULE_PATH);
        InvBypassModes = options->getBool("invitebypassmodes", true);
        NoSnoticeStack = options->getBool("nosnoticestack", false);
 
@@ -597,7 +584,10 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid)
        User* user = useruid.empty() ? NULL : ServerInstance->FindNick(useruid);
 
        if (!valid)
+       {
                ServerInstance->Logs->Log("CONFIG", LOG_DEFAULT, "There were errors in your configuration file:");
+               Classes.clear();
+       }
 
        while (errstr.good())
        {
@@ -793,6 +783,9 @@ void ConfigReaderThread::Finish()
                for (ModuleManager::ModuleMap::const_iterator i = mods.begin(); i != mods.end(); ++i)
                        i->second->ReadConfig(status);
 
+               // The description of this server may have changed - update it for WHOIS etc.
+               ServerInstance->FakeClient->server->description = Config->ServerDesc;
+
                ServerInstance->ISupport.Build();
 
                ServerInstance->Logs->CloseLogs();