X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fconfigreader.cpp;h=18b62fb0943875fabd277bc19c894dd4293ba284;hb=4aa27e75af8da0a5bc2e35f931f0165339f5f289;hp=6471413e08e2095ae36134458230101a1a648e86;hpb=3b927b48ccb30619d9ace318b5a7d21f2279abbf;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/configreader.cpp b/src/configreader.cpp index 6471413e0..18b62fb09 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -158,9 +158,8 @@ void ServerConfig::CrossCheckOperClassType() if (OperTypes.find(name) != OperTypes.end()) throw CoreException("Duplicate type block with name " + name + " at " + tag->getTagLocation()); - OperInfo* ifo = new OperInfo; + OperInfo* ifo = new OperInfo(name); OperTypes[name] = ifo; - ifo->name = name; ifo->type_block = tag; std::string classname; @@ -190,8 +189,7 @@ void ServerConfig::CrossCheckOperClassType() if (oper_blocks.find(name) != oper_blocks.end()) throw CoreException("Duplicate oper block with name " + name + " at " + tag->getTagLocation()); - OperInfo* ifo = new OperInfo; - ifo->name = type; + OperInfo* ifo = new OperInfo(type); ifo->oper_block = tag; ifo->type_block = tblk->second->type_block; ifo->class_blocks.assign(tblk->second->class_blocks.begin(), tblk->second->class_blocks.end()); @@ -221,7 +219,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) } } - int blk_count = config_data.count("connect"); + size_t blk_count = config_data.count("connect"); if (blk_count == 0) { // No connect blocks found; make a trivial default block @@ -233,14 +231,14 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) } Classes.resize(blk_count); - std::map names; + std::map names; bool try_again = true; - for(int tries=0; try_again; tries++) + for(size_t tries = 0; try_again; tries++) { try_again = false; ConfigTagList tags = ConfTags("connect"); - int i=0; + size_t i = 0; for(ConfigIter it = tags.first; it != tags.second; ++it, ++i) { ConfigTag* tag = it->second; @@ -251,7 +249,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) std::string parentName = tag->getString("parent"); if (!parentName.empty()) { - std::map::iterator parentIter = names.find(parentName); + std::map::const_iterator parentIter = names.find(parentName); if (parentIter == names.end()) { try_again = true; @@ -313,7 +311,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) if (tag->readString("sendq", sendq)) { // attempt to guess a good hard/soft sendq from a single value - long value = atol(sendq.c_str()); + unsigned long value = strtoul(sendq.c_str(), NULL, 10); if (value > 16384) me->softsendqmax = value / 16; else @@ -446,15 +444,12 @@ void ServerConfig::Fill() PID = ConfValue("pid")->getString("file"); MaxChans = ConfValue("channels")->getInt("users", 20); OperMaxChans = ConfValue("channels")->getInt("opers"); - c_ipv4_range = ConfValue("cidr")->getInt("ipv4clone", 32); - c_ipv6_range = ConfValue("cidr")->getInt("ipv6clone", 128); + c_ipv4_range = ConfValue("cidr")->getInt("ipv4clone", 32, 1, 32); + c_ipv6_range = ConfValue("cidr")->getInt("ipv6clone", 128, 1, 128); Limits = ServerLimits(ConfValue("limits")); Paths = ServerPaths(ConfValue("path")); NoSnoticeStack = options->getBool("nosnoticestack", false); - if (Network.find(' ') != std::string::npos) - throw CoreException(Network + " is not a valid network name. A network name must not contain spaces."); - std::string defbind = options->getString("defaultbind"); if (stdalgo::string::equalsci(defbind, "ipv4")) { @@ -553,7 +548,7 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid) /* The stuff in here may throw CoreException, be sure we're in a position to catch it. */ try { - for (int index = 0; index * sizeof(DeprecatedConfig) < sizeof(ChangedConfig); index++) + for (unsigned long index = 0; index * sizeof(DeprecatedConfig) < sizeof(ChangedConfig); index++) { std::string value; ConfigTagList tags = ConfTags(ChangedConfig[index].tag); @@ -822,7 +817,17 @@ void ConfigReaderThread::Finish() ConfigStatus status(user); const ModuleManager::ModuleMap& mods = ServerInstance->Modules->GetModules(); for (ModuleManager::ModuleMap::const_iterator i = mods.begin(); i != mods.end(); ++i) - i->second->ReadConfig(status); + { + try + { + ServerInstance->Logs->Log("MODULE", LOG_DEBUG, "Rehashing " + i->first); + i->second->ReadConfig(status); + } + catch (CoreException& modex) + { + ServerInstance->Logs->Log("MODULE", LOG_DEFAULT, "Exception caught: " + modex.GetReason()); + } + } // The description of this server may have changed - update it for WHOIS etc. ServerInstance->FakeClient->server->description = Config->ServerDesc;