summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-10-26 00:55:04 -0400
committerAdam <Adam@anope.org>2012-10-26 00:55:04 -0400
commit8d27b25bf861072c35f534189b05a7a3811ee8f7 (patch)
tree0185d3e50e55513e36f29b23d88aba173604e2cf /src
parent727b35536f6efc19a76b84d2a8142ba494c1e9d6 (diff)
Don't attempt to process any query packets if we aren't explicitly given permission to bind to a port (we do anyway currently for m_dnsbl to get replies)
Diffstat (limited to 'src')
-rw-r--r--src/dns.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/dns.cpp b/src/dns.cpp
index a27526a2e..faafd199e 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -631,7 +631,7 @@ bool DNSManager::UDPSocket::ProcessWrite()
return true;
}
-DNSManager::DNSManager(const Anope::string &nameserver, const Anope::string &ip, int port) : Timer(300, Anope::CurTime, true), serial(0), last_year(0), last_day(0), last_num(0), tcpsock(NULL), udpsock(NULL)
+DNSManager::DNSManager(const Anope::string &nameserver, const Anope::string &ip, int port) : Timer(300, Anope::CurTime, true), listen(false), serial(0), last_year(0), last_day(0), last_num(0), tcpsock(NULL), udpsock(NULL)
{
this->addrs.pton(nameserver.find(':') != Anope::string::npos ? AF_INET6 : AF_INET, nameserver, port);
@@ -648,6 +648,7 @@ DNSManager::DNSManager(const Anope::string &nameserver, const Anope::string &ip,
{
udpsock->Bind(ip, port);
tcpsock = new TCPSocket(ip, port);
+ listen = true;
}
catch (const SocketException &ex)
{
@@ -699,7 +700,9 @@ bool DNSManager::HandlePacket(ReplySocket *s, const unsigned char *const packet_
if (!(recv_packet.flags & DNS_QUERYFLAGS_QR))
{
- if (recv_packet.questions.empty())
+ if (!listen)
+ return true;
+ else if (recv_packet.questions.empty())
{
Log(LOG_DEBUG_2) << "Resolver: Received a question with no questions?";
return true;