summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-05-21 22:07:48 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-05-21 22:07:48 +0000
commit84237f6b23be4bcafef9e69e8844e425bd969b46 (patch)
tree8e3a1b76c384183a1142efb92ef2eb087ae8244b /src
parente52435a2a8ebbab86c826e32f86e6d1aa4f786e8 (diff)
Clean this up a bit, and log about ignoring link blocks due to missing attributes
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9787 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/modules/m_spanningtree/utils.cpp69
1 files changed, 41 insertions, 28 deletions
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index 38923a7e2..cfbb9add0 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -348,42 +348,55 @@ void SpanningTreeUtilities::RefreshIPCache()
ValidIPs.clear();
for (std::vector<Link>::iterator L = LinkBlocks.begin(); L != LinkBlocks.end(); L++)
{
- if ((!L->IPAddr.empty()) && (!L->RecvPass.empty()) && (!L->SendPass.empty()) && (!L->Name.empty()) && (L->Port))
+ if (L->IPAddr.empty() || L->RecvPass.empty() || L->SendPass.empty() || L->Name.empty() || L->Port)
{
- ValidIPs.push_back(L->IPAddr);
-
- if (L->AllowMask.length())
- ValidIPs.push_back(L->AllowMask);
-
- /* Needs resolving */
- bool ipvalid = true;
- QueryType start_type = DNS_QUERY_A;
-#ifdef IPV6
- start_type = DNS_QUERY_AAAA;
- if (strchr(L->IPAddr.c_str(),':'))
+ if (L->Name.empty())
{
- in6_addr n;
- if (inet_pton(AF_INET6, L->IPAddr.c_str(), &n) < 1)
- ipvalid = false;
+ ServerInstance->Logs->Log("m_spanningtree",DEFAULT,"m_spanningtree: Ignoring a malformed link block (all link blocks require a name!)");
}
else
+ {
+ ServerInstance->Logs->Log("m_spanningtree",DEFAULT,"m_spanningtree: Ignoring a link block missing recvpass, sendpass, port or ipaddr.");
+ }
+
+ /* Invalid link block */
+ continue;
+ }
+
+ ValidIPs.push_back(L->IPAddr);
+
+ if (L->AllowMask.length())
+ ValidIPs.push_back(L->AllowMask);
+
+ /* Needs resolving */
+ bool ipvalid = true;
+ QueryType start_type = DNS_QUERY_A;
+#ifdef IPV6
+ start_type = DNS_QUERY_AAAA;
+ if (strchr(L->IPAddr.c_str(),':'))
+ {
+ in6_addr n;
+ if (inet_pton(AF_INET6, L->IPAddr.c_str(), &n) < 1)
+ ipvalid = false;
+ }
+ else
#endif
+ {
+ in_addr n;
+ if (inet_aton(L->IPAddr.c_str(),&n) < 1)
+ ipvalid = false;
+ }
+
+ if (!ipvalid)
+ {
+ try
{
- in_addr n;
- if (inet_aton(L->IPAddr.c_str(),&n) < 1)
- ipvalid = false;
+ bool cached;
+ SecurityIPResolver* sr = new SecurityIPResolver((Module*)this->Creator, this, ServerInstance, L->IPAddr, *L, cached, start_type);
+ ServerInstance->AddResolver(sr, cached);
}
- if (!ipvalid)
+ catch (...)
{
- try
- {
- bool cached;
- SecurityIPResolver* sr = new SecurityIPResolver((Module*)this->Creator, this, ServerInstance, L->IPAddr, *L, cached, start_type);
- ServerInstance->AddResolver(sr, cached);
- }
- catch (...)
- {
- }
}
}
}