summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-03-08 17:15:52 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-03-08 17:15:52 +0000
commit2465c2ab91bb33c4ec00305dc5b3cb5b773016af (patch)
tree02c5fe0fc780afd0e7b6af03d73a3e2c0145c922
parent8cebf7069a5eba14a33ced91f1e7ec75e01162d3 (diff)
Warn about duplicate <type> and <class> blocks
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12614 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/configreader.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp
index 1905b36d0..696b19a1b 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -185,6 +185,8 @@ void ServerConfig::CrossCheckOperClassType()
std::string name = tag->getString("name");
if (name.empty())
throw CoreException("<class:name> missing from tag at " + tag->getTagLocation());
+ if (operclass.find(name) != oper_blocks.end())
+ throw CoreException("Duplicate class block with name " + name + " at " + tag->getTagLocation());
operclass[name] = tag;
}
tags = ConfTags("type");
@@ -194,9 +196,10 @@ void ServerConfig::CrossCheckOperClassType()
std::string name = tag->getString("name");
if (name.empty())
throw CoreException("<type:name> is missing from tag at " + tag->getTagLocation());
-
if (!ServerInstance->IsNick(name.c_str(), Limits.NickMax))
throw CoreException("<type:name> is invalid (value '" + name + "')");
+ if (oper_blocks.find(" " + name) != oper_blocks.end())
+ throw CoreException("Duplicate type block with name " + name + " at " + tag->getTagLocation());
OperInfo* ifo = new OperInfo;
oper_blocks[" " + name] = ifo;