def initialize(args)
Socket.do_not_reverse_lookup = true
Log.level = args[:loglevel] if args[:loglevel]
Log.debug { "Initialize with args: " + args.inspect }
Dnsruby.log.level = args[:libloglevel] if args[:libloglevel]
@state = args[:state] || nil
@maxdepth = args[:maxdepth] || 10
@progress_main = args[:progress_main] || method(:progress_null)
@progress_resolve = args[:progress_resolve] || method(:progress_null)
@fast = args[:fast] || false
@answered = @fast ? Hash.new : nil
@seen = Hash.new
retries = args[:retries] || 2
retry_delay = args[:retry_delay] || 2
packet_timeout = args[:packet_timeout] || 2
dnssec = args[:dnssec] || false
srcaddr = args[:srcaddr] || '0.0.0.0'
use_tcp = args[:always_tcp] || false
ignore_truncation = args[:allow_tcp] ? false : true
udpsize = args[:udpsize] || 512
cfg = Dnsruby::Config.new
rescfg = { :nameserver => cfg.nameserver, :ndots => cfg.ndots,
:apply_domain => false, :apply_search_list => false}
resargs = { :config_info => rescfg, :use_tcp => use_tcp, :recurse => false,
:retry_times => retries, :retry_delay => retry_delay, :dnssec => dnssec,
:ignore_truncation => ignore_truncation, :src_address => srcaddr,
:udp_size => udpsize.to_i, :packet_timeout => packet_timeout }
Log.debug { "Creating remote resolver object"}
CachingResolver.use_eventmachine(false)
@resolver = CachingResolver.new(resargs)
@resolver.udp_size = udpsize.to_i
Log.debug { "Creating local resolver object"}
resargs[:recurse] = true
@lresolver = Dnsruby::Resolver.new(resargs)
@lresolver.udp_size = udpsize.to_i
self
end