summaryrefslogtreecommitdiff
path: root/src/dns.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dns.cpp')
-rw-r--r--src/dns.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/dns.cpp b/src/dns.cpp
index 9f99a5b49..b3f97caed 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -27,20 +27,22 @@ DNSRequest::DNSRequest(const Anope::string &addr, QueryType qt, bool cache, Modu
return;
}
- DNSPacket *p = new DNSPacket();
-
- while (DNSEngine->requests.count((p->id = GetRandomID())));
-
- DNSEngine->requests[p->id] = this;
- DNSEngine->packets.push_back(p);
-
+ DNSPacket *p = new DNSPacket();
p->flags = DNS_QUERYFLAGS_RD;
+
if (!p->AddQuestion(addr, qt))
{
+ Log() << "Resolver: Unable to lookup host " << addr << " of type " << qt << " - internal error";
+ delete p;
delete this;
return;
}
+ while (DNSEngine->requests.count((p->id = GetRandomID())));
+
+ DNSEngine->requests[p->id] = this;
+ DNSEngine->packets.push_back(p);
+
SocketEngine->MarkWritable(DNSEngine->sock);
this->timeout = new DNSRequestTimeout(this, Config->DNSTimeout);