def resolve_calculate
Log.debug { "Calculating resolution: #{self}" }
@stats_resolve = Hash.new
if noglue? then
r = DNSTraverse::Response::NoGlue.new(:qname => @qname,
:qclass => @qclass,
:qtype => @qtype,
:server => @server,
:ip => @parent_ip,
:bailiwick => @bailiwick)
@stats_resolve[r.stats_key] = { :prob => 1.0, :response => r,
:referral => self }
else
stats_calculate_children(@stats_resolve, @resolves, 1.0)
end
@serverweights = Hash.new
@stats_resolve.each_pair do |key, data|
if data[:response].status == :answered then
answers = data[:response].answers
for rr in answers do
@serverweights[rr.address.to_s]||= 0
@serverweights[rr.address.to_s]+= data[:prob] / answers.length
end
else
@serverweights[key]||= 0
@serverweights[key]+= data[:prob]
end
end
@serverips = @serverweights.keys
Log.debug { "Calculating resolution (answer): #{@serverips.join(',')}" }
end