diff options
author | Adam <Adam@anope.org> | 2012-10-26 00:55:04 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2012-10-26 00:55:04 -0400 |
commit | 8d27b25bf861072c35f534189b05a7a3811ee8f7 (patch) | |
tree | 0185d3e50e55513e36f29b23d88aba173604e2cf /src | |
parent | 727b35536f6efc19a76b84d2a8142ba494c1e9d6 (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.cpp | 7 |
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; |