From 8d27b25bf861072c35f534189b05a7a3811ee8f7 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 26 Oct 2012 00:55:04 -0400 Subject: 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) --- src/dns.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') 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; -- cgit