def process
return process_exception if @message.is_a? Exception
@auth_ns, @auth_soa, @auth_other = msg_authority(@message)
@cacheable_good, @cacheable_bad = msg_cacheable(@message, @bailiwick)
@endname = msg_follow_cnames(@message, :qname => @qname, :qtype => @qtype,
:bailiwick => @bailiwick)
return process_restart unless inside_bailiwick?(@endname)
return process_error if @message.rcode != NOERROR
@answers = msg_answers?(@message, :qname => @endname, :qtype => qtype)
return process_answered if @answers
return process_nodata if @auth_soa.size > 0 or @auth_ns.size == 0
return process_referral unless @auth_ns.empty?
return process_restart
end