-- Check time validity of RRSIGs in priming query
-- luacheck: no unused args
local function check_time_callback(pkt, req)
- if pkt:rcode() ~= kres.rcode.NOERROR then
+ if pkt == nil or pkt:rcode() ~= kres.rcode.NOERROR then
warn("[detect_time_skew] cannot resolve '.' NS")
return nil
end
-- When all response is processed internal.nsset is published in resolver engine
-- luacheck: no unused args
local function address_callback(pkt, req)
- if pkt:rcode() ~= kres.rcode.NOERROR then
+ if pkt == nil or pkt:rcode() ~= kres.rcode.NOERROR then
+ pkt = req.qsource.packet
warn("[priming] cannot resolve address '%s', type: %d", kres.dname2str(pkt:qname()), pkt:qtype())
else
local section = pkt:rrsets(kres.section.ANSWER)
-- These new queries should be resolved from cache.
-- luacheck: no unused args
local function priming_callback(pkt, req)
- if pkt:rcode() ~= kres.rcode.NOERROR then
+ if pkt == nil or pkt:rcode() ~= kres.rcode.NOERROR then
warn("[priming] cannot resolve '.' NS, next priming query in %d seconds", priming.retry_time / sec)
internal.event = event.after(priming.retry_time, internal.prime)
return nil
local function active_refresh(keyset, pkt, req, managed)
local retry = true
- if pkt:rcode() == kres.rcode.NOERROR then
+ if pkt ~= nil and pkt:rcode() == kres.rcode.NOERROR then
local records = pkt:section(kres.section.ANSWER)
local new_keys = {}
for _, rr in ipairs(records) do
local qry = req:initial()
if qry.flags.DNSSEC_BOGUS == true then
warn('[ta_update] active refresh failed, update your trust anchors in "%s"', keyset.filename)
+ elseif pkt == nil then
+ warn('[ta_update] active refresh failed, answer was dropped')
else
warn('[ta_update] active refresh failed for ' .. kres.dname2str(keyset.owner)
.. ' with rcode: ' .. pkt:rcode())
local function check_answer(logbuf)
return function (pkt, req)
req.trace_log:free()
- if pkt:rcode() == kres.rcode.NOERROR or pkt:rcode() == kres.rcode.NXDOMAIN then
+ if pkt ~= nil and (pkt:rcode() == kres.rcode.NOERROR
+ or pkt:rcode() == kres.rcode.NXDOMAIN) then
private.ok_callback()
return
end
log('[watchdog] watchdog query returned unexpected answer! query verbose log:')
log(table.concat(logbuf, ''))
- log('[watchdog] problematic answer:\n%s', pkt)
+ if pkt ~= nil then
+ log('[watchdog] problematic answer:\n%s', pkt)
+ else
+ log('[watchdog] answer was dropped')
+ end
-- failure! quit immediatelly to allow process supervisor to restart us
private.fail_callback()
end
local done = false
local callback = function(pkt)
+ ok(pkt, 'answer not dropped')
same(pkt:rcode(), wire_rcode,
desc .. ': expecting answer for query ' .. qname .. ' ' .. qtype_str
.. ' with rcode ' .. kres.tostring.rcode[wire_rcode])