summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 (...)
- {
- }
}
}
}