diff options
author | DukePyrolator <DukePyrolator@anope.org> | 2012-10-24 05:12:47 +0200 |
---|---|---|
committer | DukePyrolator <DukePyrolator@anope.org> | 2012-10-24 05:12:47 +0200 |
commit | ef5c6684c71fda6837f4d217d4f61bb418523047 (patch) | |
tree | 599dffcd828fc4a4213a7a2d2b17a449ed3c6e77 /src/dns.cpp | |
parent | e0438e3a7ee3b7737f5138e7f43157b07479c824 (diff) | |
parent | 04632bd381796dd90742bbc6ccd38905d4de25be (diff) |
Merge branch '1.9' of ssh://anope.git.sourceforge.net/gitroot/anope/anope into 1.9
Diffstat (limited to 'src/dns.cpp')
-rw-r--r-- | src/dns.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/dns.cpp b/src/dns.cpp index 519e02b8f..7c62b594a 100644 --- a/src/dns.cpp +++ b/src/dns.cpp @@ -462,12 +462,12 @@ unsigned short DNSPacket::Pack(unsigned char *output, unsigned short output_size return pos; } -DNSManager::DNSManager(const Anope::string &nameserver, int port) : Timer(300, Anope::CurTime, true), Socket(-1, nameserver.find(':') != Anope::string::npos, SOCK_DGRAM) +DNSManager::DNSManager(const Anope::string &nameserver, const Anope::string &ip, int port) : Timer(300, Anope::CurTime, true), Socket(-1, nameserver.find(':') != Anope::string::npos, SOCK_DGRAM) { this->addrs.pton(this->IPv6 ? AF_INET6 : AF_INET, nameserver, port); try { - this->Bind("0.0.0.0", port); + this->Bind(ip, port); } catch (const SocketException &ex) { @@ -525,7 +525,12 @@ bool DNSManager::ProcessRead() if (!(recv_packet.flags & DNS_QUERYFLAGS_QR)) { - FOREACH_MOD(I_OnDnsRequest, OnDnsRequest(recv_packet)); + DNSPacket *packet = new DNSPacket(recv_packet); + packet->flags |= DNS_QUERYFLAGS_QR; /* This is a reponse */ + + FOREACH_MOD(I_OnDnsRequest, OnDnsRequest(recv_packet, packet)); + + DNSEngine->SendPacket(packet); return true; } |