From 9c02aff3e4a05c1aeb3f832da7d7c0e475121a96 Mon Sep 17 00:00:00 2001
From: brain
Date: Thu, 1 Nov 2007 18:19:54 +0000
Subject: Make misconfiguration of spanningtree more 'fatal' so we get less
morons coming to us saying 'it wont link' and not knowing its skipped their
invalid link tag
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8455 e03df62e-2008-0410-955e-edbf42e46eb7
---
src/modules/m_spanningtree/utils.cpp | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
(limited to 'src/modules/m_spanningtree/utils.cpp')
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index f147a6f79..adeacb5bd 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -487,7 +487,7 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind)
if ((!transport.empty()) && (hooks.find(transport.c_str()) == hooks.end()))
{
- ServerInstance->Log(DEFAULT,"m_spanningtree: WARNING: Can't find transport type '%s' for port %s:%s - maybe you forgot to load it BEFORE m_spanningtree in your config file? - Skipping this port binding", transport.c_str(), IP.c_str(), Port.c_str());
+ throw CoreException("Can't find transport type '"+transport+"' for port "+IP+":"+Port+" - maybe you forgot to load it BEFORE m_spanningtree in your config file?");
break;
}
@@ -544,8 +544,7 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind)
if ((!L.Hook.empty()) && (hooks.find(L.Hook.c_str()) == hooks.end()))
{
- ServerInstance->Log(DEFAULT,"m_spanningtree: WARNING: Can't find transport type '%s' for link '%s' - maybe you forgot to load it BEFORE m_spanningtree in your config file? Skipping tag completely.",
- L.Hook.c_str(), L.Name.c_str());
+ throw CoreException("Can't find transport type '"+L.Hook+"' for link '"+assign(L.Name)+"' - maybe you forgot to load it BEFORE m_spanningtree in your config file? Skipping tag completely.");
continue;
}
@@ -556,6 +555,12 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind)
{
if ((!L.IPAddr.empty()) && (!L.RecvPass.empty()) && (!L.SendPass.empty()) && (!L.Name.empty()) && (L.Port))
{
+ if (L.Name.find('.') == std::string::npos)
+ throw CoreException("The link name '"+assign(L.Name)+"' is invalid and must contain at least one '.' character");
+
+ if (L.Name.length() > 64)
+ throw CoreException("The link name '"+assign(L.Name)+"' is longer than 64 characters!");
+
ValidIPs.push_back(L.IPAddr);
if (Allow.length())
@@ -603,29 +608,29 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind)
{
if (L.IPAddr.empty())
{
- ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', IP address not defined!",L.Name.c_str());
+ throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', IP address not defined!");
}
else if (L.RecvPass.empty())
{
- ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', recvpass not defined!",L.Name.c_str());
+ throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', recvpass not defined!");
}
else if (L.SendPass.empty())
{
- ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', sendpass not defined!",L.Name.c_str());
+ throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', sendpass not defined!");
}
else if (L.Name.empty())
{
- ServerInstance->Log(DEFAULT,"Invalid configuration, link tag without a name!");
+ throw CoreException("Invalid configuration, link tag without a name! IP address: "+L.IPAddr);
}
else if (!L.Port)
{
- ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', no port specified!",L.Name.c_str());
+ throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', no port specified!");
}
}
}
else
{
- ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', link tag has the same server name as the local server!",L.Name.c_str());
+ throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', link tag has the same server name as the local server!");
}
}
DELETE(Conf);
--
cgit v1.3.1-10-gc9f91