and check for nullptr function in task record.
static void resolve(const struct timeval& now, bool logErrors, const pdns::ResolveTask& task)
{
- ++s_almost_expired_tasks_run;
const string msg = "Exception while running a background ResolveTask";
SyncRes sr(now);
vector<DNSRecord> ret;
try {
g_log << Logger::Debug << "TaskQueue: resolving " << task.d_qname.toString() << '|' << QType(task.d_qtype).toString() << endl;
int res = sr.beginResolve(task.d_qname, QType(task.d_qtype), QClass::IN, ret);
+ ++s_almost_expired_tasks_run;
g_log << Logger::Debug << "TaskQueue: DONE resolving " << task.d_qname.toString() << '|' << QType(task.d_qtype).toString() << ": " << res << endl;
}
catch (const std::exception& e) {
return false;
}
ResolveTask task = pop();
+ if (task.func == nullptr) {
+ g_log << Logger::Debug << "TaskQueue: null task for " << task.d_qname.toString() << '|' << QType(task.d_qtype).toString() << endl;
+ return true;
+ }
struct timeval now;
- gettimeofday(&now, 0);
+ Utility::gettimeofday(&now);
if (task.d_deadline >= now.tv_sec) {
task.func(now, logErrors, task);
}
{ "almost-expired-run",
MetricDefinition(PrometheusMetricType::counter,
- "number of almost-expired tasks run")},
+ "number of almost-expired tasks run to completion")},
{ "almost-expired-exceptions",
MetricDefinition(PrometheusMetricType::counter,