sid = server->getString("id");
if (!sid.empty() && !InspIRCd::IsSID(sid))
throw CoreException(sid + " is not a valid server ID. A server ID must be 3 characters long, with the first character a digit and the next two characters a digit or letter.");
+
+ CaseMapping = options->getString("casemapping", "rfc1459");
+ if (CaseMapping == "ascii")
+ national_case_insensitive_map = ascii_case_insensitive_map;
+ else if (CaseMapping == "rfc1459")
+ national_case_insensitive_map = rfc_case_insensitive_map;
+ else
+ throw CoreException("<options:casemapping> must be set to 'ascii', or 'rfc1459'");
}
else
{
std::string nsid = server->getString("id");
if (!nsid.empty() && nsid != sid)
throw CoreException("You must restart to change the server id");
+
+ std::string casemapping = options->getString("casemapping");
+ if (!casemapping.empty() && casemapping != CaseMapping)
+ throw CoreException("You must restart to change the server casemapping");
+
}
SoftLimit = ConfValue("performance")->getInt("softlimit", (SocketEngine::GetMaxFds() > 0 ? SocketEngine::GetMaxFds() : LONG_MAX), 10);
CCOnConnect = ConfValue("performance")->getBool("clonesonconnect", true);
ReadXLine(this, "badhost", "host", ServerInstance->XLines->GetFactory("K"));
ReadXLine(this, "exception", "host", ServerInstance->XLines->GetFactory("E"));
- memset(DisabledUModes, 0, sizeof(DisabledUModes));
+ DisabledUModes.reset();
std::string modes = ConfValue("disabled")->getString("usermodes");
for (std::string::const_iterator p = modes.begin(); p != modes.end(); ++p)
{
- // Complain when the character is not a-z or A-Z
- if ((*p < 'A') || (*p > 'z') || ((*p < 'a') && (*p > 'Z')))
+ // Complain when the character is not a valid mode character.
+ if (!ModeParser::IsModeChar(*p))
throw CoreException("Invalid usermode " + std::string(1, *p) + " was found.");
- DisabledUModes[*p - 'A'] = 1;
+ DisabledUModes.set(*p - 'A');
}
- memset(DisabledCModes, 0, sizeof(DisabledCModes));
+ DisabledCModes.reset();
modes = ConfValue("disabled")->getString("chanmodes");
for (std::string::const_iterator p = modes.begin(); p != modes.end(); ++p)
{
- if ((*p < 'A') || (*p > 'z') || ((*p < 'a') && (*p > 'Z')))
+ if (!ModeParser::IsModeChar(*p))
throw CoreException("Invalid chanmode " + std::string(1, *p) + " was found.");
- DisabledCModes[*p - 'A'] = 1;
+ DisabledCModes.set(*p - 'A');
}
std::string v = security->getString("announceinvites");
/*
* These values can only be set on boot. Keep their old values. Do it before we send messages so we actually have a servername.
*/
+ this->CaseMapping = old->CaseMapping;
this->ServerName = old->ServerName;
this->sid = old->sid;
this->cmdline = old->cmdline;
int j = 1;
for (FailedPortList::iterator i = pl.begin(); i != pl.end(); i++, j++)
{
- errstr << j << ".\tAddress: " << (i->first.empty() ? "<all>" : i->first.c_str()) << "\tReason: "
- << i->second << std::endl;
+ errstr << j << ".\tAddress: " << i->first.str() << "\tReason: " << strerror(i->second) << std::endl;
}
}
}