return;
}
vector<DNSRecord> dummy;
- directResolve(qname, QType::A, QClass::IN, dummy, false);
+ directResolve(qname, QType::A, QClass::IN, dummy, nullptr, false);
}
}
return rcode;
}
- rcode = directResolve(target, qtype, QClass::IN, resolved);
+ rcode = directResolve(target, qtype, QClass::IN, resolved, t_pdl);
for(DNSRecord& rr : resolved) {
ret.push_back(std::move(rr));
again, possibly encountering the same CNAME(s), and we don't want to trigger the CNAME
loop detection. */
vector<DNSRecord> newRecords;
- int rcode = directResolve(qname, QType::A, QClass::IN, newRecords);
+ int rcode = directResolve(qname, QType::A, QClass::IN, newRecords, t_pdl);
ret.reserve(ret.size() + newRecords.size());
for (auto& record : newRecords) {
rr.d_content = std::make_shared<CNAMERecordContent>(newquery);
ret.push_back(rr);
- int rcode = directResolve(DNSName(newquery), QType::PTR, QClass::IN, ret);
+ int rcode = directResolve(DNSName(newquery), QType::PTR, QClass::IN, ret, t_pdl);
return rcode;
}
}
// used by PowerDNSLua - note that this neglects to add the packet count & statistics back to pdns_recursor.cc
-int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret)
+int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret, shared_ptr<RecursorLua4> pdl)
{
- return directResolve(qname, qtype, qclass, ret, SyncRes::s_qnameminimization);
+ return directResolve(qname, qtype, qclass, ret, pdl, SyncRes::s_qnameminimization);
}
-int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret, bool qm)
+int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret, shared_ptr<RecursorLua4> pdl, bool qm)
{
struct timeval now;
gettimeofday(&now, 0);
SyncRes sr(now);
sr.setQNameMinimization(qm);
+ if (pdl) {
+ sr.setLuaEngine(pdl);
+ }
int res = -1;
try {
void broadcastFunction(const pipefunc_t& func);
void distributeAsyncFunction(const std::string& question, const pipefunc_t& func);
-int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret);
-int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret, bool qm);
+int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret, shared_ptr<RecursorLua4> pdl);
+int directResolve(const DNSName& qname, const QType qtype, const QClass qclass, vector<DNSRecord>& ret, shared_ptr<RecursorLua4> pdl, bool qm);
int followCNAMERecords(std::vector<DNSRecord>& ret, const QType qtype, int oldret);
int getFakeAAAARecords(const DNSName& qname, ComboAddress prefix, vector<DNSRecord>& ret);
int getFakePTRRecords(const DNSName& qname, vector<DNSRecord>& ret);